PHP中的图片等比缩放是指在不改变图片宽高比的情况下,调整图片的尺寸。这通常用于优化网页加载速度,适应不同的显示设备,或者创建缩略图。
以下是一个使用PHP进行图片等比缩放的示例代码:
<?php
function resizeImage($sourceImage, $destinationImage, $width, $height) {
// 获取原始图片信息
list($sourceWidth, $sourceHeight, $sourceType) = getimagesize($sourceImage);
// 根据图片类型创建图像资源
switch ($sourceType) {
case IMAGETYPE_GIF:
$sourceResource = imagecreatefromgif($sourceImage);
break;
case IMAGETYPE_JPEG:
$sourceResource = imagecreatefromjpeg($sourceImage);
break;
case IMAGETYPE_PNG:
$sourceResource = imagecreatefrompng($sourceImage);
break;
default:
return false;
}
// 计算等比缩放后的尺寸
if ($width / $height > $sourceWidth / $sourceHeight) {
$newWidth = $height * ($sourceWidth / $sourceHeight);
$newHeight = $height;
} else {
$newWidth = $width;
$newHeight = $width * ($sourceHeight / $sourceWidth);
}
// 创建目标图像资源
$destinationResource = imagecreatetruecolor($newWidth, $newHeight);
// 开始缩放
imagecopyresampled($destinationResource, $sourceResource, 0, 0, 0, 0, $newWidth, $newHeight, $sourceWidth, $sourceHeight);
// 根据目标图片类型保存图像
switch ($sourceType) {
case IMAGETYPE_GIF:
imagegif($destinationResource, $destinationImage);
break;
case IMAGETYPE_JPEG:
imagejpeg($destinationResource, $destinationImage);
break;
case IMAGETYPE_PNG:
imagepng($destinationResource, $destinationImage);
break;
}
// 释放内存
imagedestroy($sourceResource);
imagedestroy($destinationResource);
return true;
}
// 使用示例
$sourceImage = 'path/to/source/image.jpg';
$destinationImage = 'path/to/destination/image.jpg';
$width = 300;
$height = 200;
resizeImage($sourceImage, $destinationImage, $width, $height);
?>
imagejpeg
函数的第二个参数来控制图片质量。imagejpeg($destinationResource, $destinationImage, 90); // 90表示质量为90%
通过以上方法,可以有效地解决PHP中图片等比缩放的相关问题。
没有搜到相关的文章