PHP的imagecopymerge() 函数本身不能直接改变图片大小,但它可以将一张图片的内容合并到另一张图片上。如果你想要改变图片的大小,你需要在调用 imagecopymerge() 之前使用 PHP 的 GD 库中的其他函数,如 imagecreatefromjpeg()、imagecreatefrompng() 或 imagecreatefromgif() 等来创建一个新的图像资源,然后使用 imagejpeg()、imagepng() 或 imagegif() 等函数将调整大小后的图像输出到浏览器或保存到文件。
以下是一个示例代码,展示了如何使用 imagecreatefromjpeg() 和 imagejpeg() 来改变 JPEG 图片的大小:
<?php
// 加载原始图片
$sourceImage = imagecreatefromjpeg('original.jpg');
// 获取原始图片的宽度和高度
$sourceWidth = imagesx($sourceImage);
$sourceHeight = imagesy($sourceImage);
// 设置新的图片尺寸
$newWidth = 300;
$newHeight = 200;
// 创建一个新的空白图像资源,用于保存调整大小后的图片
$destinationImage = imagecreatetruecolor($newWidth, $newHeight);
// 保持 PNG 和 GIF 图片的透明度
imagealphablending($destinationImage, false);
imagesavealpha($destinationImage, true);
// 将原始图片按比例缩放到新图片中
imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $newWidth, $newHeight, $sourceWidth, $sourceHeight);
// 输出调整大小后的图片到浏览器
header('Content-Type: image/jpeg');
imagejpeg($destinationImage);
// 销毁图像资源
imagedestroy($sourceImage);
imagedestroy($destinationImage);
?>
在这个示例中,我们首先加载了名为 “original.jpg” 的原始图片,然后获取了它的宽度和高度。接着,我们定义了新的图片尺寸,并创建了一个新的空白图像资源。我们使用 imagecopyresampled() 函数将原始图片按比例缩放到新图片中,并保持了 PNG 和 GIF 图片的透明度。最后,我们使用 imagejpeg() 函数将调整大小后的图片输出到浏览器,并销毁了图像资源。