Imagecreatefromstring并调整大小

时间:2013-10-11 08:02:44

标签: php stream

我试图从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);
        }

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

抱歉我的英文。

2 个答案:

答案 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);