1

如何使用 php 从远程服务器下载、调整大小和存储图像?这是我正在使用的代码

$temp_image = file_get_contents($url);
$image = imagecreatefromstring($temp_image);
$thumb = imageToCanvas($image,100,75,true);
imagejpeg($thumb,$base_image_path . $thumb_path,90)


function imageToCanvas($_image, $_canvasWidth, $_canvasHeight, $forceScale=false,$x=false,$y=false) 
{
    $newImage = imagecreatetruecolor($_canvasWidth, $_canvasHeight);
    $imageinfo = getimagesize($_image);
    $sourceWidth = $imageinfo[0];
    $sourceHeight = $imageinfo[1];  
    $sourceImage = openImage($_image);
    imagecopyresampled($newImage, $sourceImage, 0, 0, 0, 0, $_canvasWidth, $_canvasHeight, $sourceWidth, $sourceHeight);
    return $newImage;
}

function openImage($file) 
{
 // *** Get extension
 $extension = strtolower(strrchr($file, '.'));
 switch($extension) {
   case '.jpg': case '.jpeg':
     $img = @imagecreatefromjpeg($file);
     break;
   case '.gif':
    $img = @imagecreatefromgif($file);
     break;
   case '.png':
     $img = @imagecreatefrompng($file);
     break;
   default:
     $img = false;
     break;
 }
 return $img; 
}

不起作用,我不知道为什么。

$sourceWidth&$sourceHeight没有值,所以我认为$image格式错误

谢谢!

4

2 回答 2

0

如果您在 linux 服务器上并且安装了 ghostscript - 这是一种更简单的方法

shell_exec("转换 in.jpg -resize 100x75 out.jpg")
于 2012-10-03T21:34:19.447 回答
0

php 中没有调用函数,openImage所以如果您不自己定义它,那将是一个问题。

如果您确实定义了它,它是什么样的,您是否收到任何错误?

编辑:根据您的评论,问题似乎是您将openImage函数的输入参数视为文件路径。但是,当您调用它时,您正在为它提供图像资源,即imagecreatefromstring.

于 2012-10-03T21:37:57.567 回答