所以我一直在尝试从外部网址抓取图片,裁剪然后保存。我可以复制并保存好,但这是麻烦我的作物部分。我无法弄清楚如何从CURL的东西中获取图像资源(我对卷曲不好,这是别人的卷曲东西)。
我虽然是这样的:
$img = imagecreatefromstring($image);
$crop = imagecreatetruecolor(8,8);
imagecopy ( $crop, $img, 0, 0, 8, 8, 8, 8);
但那里没有运气,保存了一个腐败的PNG。这是完整的代码:
$link = "urlhere";
$path = './mcimages/faces/';
$curl_handle=curl_init(urldecode($link));
curl_setopt($curl_handle, CURLOPT_NOBODY, true);
$result = curl_exec($curl_handle);
$retcode = false;
if($result !== false)
{
$status = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
if($status == 200)
$retcode = true;
}
curl_close($curl_handle);
if($retcode)
{
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,urldecode($link));
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$image = curl_exec($curl_handle);
curl_close($curl_handle);
if($image !== false)
{
$img = imagecreatefromstring($image);
$crop = imagecreatetruecolor(8,8);
imagecopy ( $crop, $img, 0, 0, 8, 8, 8, 8 );
if(strpos($link,"/") !== false)
{
$name = explode("/",$link);
$total = count($name);
$handle = fopen($path.$name[$total-1],"w") or die("Could not create : ".$path.rand()."_".$name[$total-1]);
if($handle !== false)
{
fwrite($handle,$crop);
fclose($handle);
echo 'The file has been successfully saved !';
}
}
}
} else {
echo 'File not found !';
}
答案 0 :(得分:1)
AFAIK,这是错误的:
fwrite($handle,$crop);
使用
imagejpeg($crop, 'output-file.jpg'); // or imagepng()
您的$ crop是一种资源,而不是带有图像数据的二进制字符串。