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


How to resize an image retrieved by file_get_contents and save it in a folder?

我想从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?请帮帮我,我在网上搜索了一下,但最终没有得到明确的解释。

以下是如果您的服务器上安装了imagemagik,您可以执行的操作。。。

$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);
    }

您需要查看GD图像处理库的文档,特别是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);
}

该函数基本上创建一个具有新高度的图像参考,加载旧的图像参考然后重新采样。您也可以使用pnggif来代替jpeg。请小心,因为GD无法正确地对动画GIF文件重新采样。

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

您可以使用GD2或ImageMagick库。