我试图从db获取图像并在客户端重新调整它之前调整它。 这工作正常,但图像完全是大小的:
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
}
所以我试过这个:
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/jpeg');
$percent = 0.5;
$width = imagesx($im);
$height = imagesy($im);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$img = imagecreatetruecolor($new_w,$new_h);
imagecopyresized($img,$im,0,0,0,0,$new_w,$new_h,$width,$height);
imagejpeg($im);
imagedestroy($im);
}
但是浏览器返回错误,说“图像无法显示,因为包含错误”。
抱歉我的英文。
答案 0 :(得分:4)
您的代码中存在一些错误: 1)你应该返回$ img,而不是$ im ...
imagejpeg($im);
imagedestroy($im);
2)你定义了$ newwidth和$ newheight,但是在下面的代码中你使用了$ new_w,$ new_h。
正确的代码:
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/jpeg');
$percent = 0.5;
$width = imagesx($im);
$height = imagesy($im);
$newwidth = $width * $percent;
$newheight = $height * $percent;
$img = imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($img,$im,0,0,0,0,$newwidth,$newheight,$width,$height);
imagejpeg($img);
imagedestroy($img);
}
答案 1 :(得分:1)
尝试更改此内容:
$img = imagecreatetruecolor($new_w,$new_h);
imagecopyresized($img,$im,0,0,0,0,$new_w,$new_h,$width,$height);
进入这个:
$img = imagecreatetruecolor($newwidth,$newheight);
imagecopyresized($img,$im,0,0,0,0,$newwidth,$newheight,$width,$height);