0

我想从 URL 中检索图像,调整其大小并将其保存到文件夹。

我有这段代码可以从 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做到这一点?请帮助我,我在互联网上搜索过,但最终解释不清楚。

4

3 回答 3

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);
    }
于 2012-07-10T09:24:25.560 回答
1

You can use the GD2 or ImageMagick libraries.

于 2012-07-10T09:18:39.087 回答
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你可以使用pngand giftoo。请小心,因为GD无法正确重新采样动画 GIF 文件。

original_image是要加载的图像的文件路径new_widthnew_height分别是目标宽度和高度的整数。filename是目标文件名,.jpg在本例中没有扩展名。

于 2012-07-10T09:24:29.763 回答