1

我试图从数据库中获取图像并在客户端接收它之前调整它的大小。这可以正常工作,但图像自然是全尺寸的:

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

但是浏览器返回一个错误,说“图像无法显示,因为包含错误”。

对不起我的英语不好。

4

2 回答 2

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);
    }
于 2013-10-11T08:08:41.747 回答
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);
于 2013-10-11T08:08:19.047 回答