我想从URL检索图像,调整其大小并将其保存到文件夹。
我有这段代码从网址中检索图片:
$url = 'http://www.example.com/image/test.jpg';
$img = 'images/newtest.jpg';
file_put_contents($img, file_get_contents($url));
问题是在执行file_put_contents
之前,我想调整图像大小。我怎么能用PHP做到这一点?请帮助我,我在互联网上搜索但最终解释不清楚。
答案 0 :(得分:2)
如果您的服务器上安装了imagemagick,可以使用以下方法...
$url = 'http://www.example.com/image/test.jpg';
$img = 'images/newtest.jpg';
file_put_contents($img, file_get_contents($url));
$image = new Imagick( $img );
$imageprops = $image->getImageGeometry();
if ($imageprops['width'] <= 200 && $imageprops['height'] <= 200) {
// don't upscale
} else {
$image->resizeImage(200,200, imagick::FILTER_LANCZOS, 0.9, true);
}
答案 1 :(得分:1)
您可以使用GD2或ImageMagick库。
答案 2 :(得分:1)
您需要查看GD Image Processing Library的文档,特别是imagecreatefromjpeg()
函数。
执行该技巧的示例函数可能如下所示:
function resize_jpeg( $original_image, $new_height, $new_width, $filename )
{
// Resize the original image
$image_resized = imagecreatetruecolor($new_width, $new_height);
$image_tmp = imagecreatefromjpeg ($original_image);
imagecopyresampled($image_resized, $image_tmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Output
imagejpeg($image_resized, $filename.".jpg", 100);
imagedestroy($image_resized);
}
该函数基本上创建一个具有新高度的图像引用,加载旧的高度,然后重新取样。您可以使用jpeg
和png
代替gif
。请注意,因为 GD 无法正确重新采样动画GIF文件。
original_image
是要加载的图片的文件路径。 new_width
和new_height
分别是目标宽度和高度的整数。 filename
是目标文件名,在此示例中没有.jpg
扩展名。