如何调整file_get_contents检索到的图像的大小并将其保存在文件夹中?

时间:2012-07-10 09:15:21

标签: php file-get-contents

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

3 个答案:

答案 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)

您可以使用GD2ImageMagick库。

答案 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);
}

该函数基本上创建一个具有新高度的图像引用,加载旧的高度,然后重新取样。您可以使用jpegpng代替gif。请注意,因为 GD 无法正确重新采样动画GIF文件。

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