imagecreatefromjpeg不能正常工作。

问题描述 投票:1回答:4

我一直在尝试用php来调整图片的大小,但是我在使用imageecreatefromjpeg功能时遇到了问题。当我试图显示一个图像时,屏幕上出现了一大堆字符,而不是图像。我也没有看到任何错误。

所以,最初我试着用这个功能来调整图像的大小。显示了一堆随机的字符,所以我想我会简化它来进行调试。

function chgSize($image, $width, $height){
    $name = $image["name"]; //this is displaying the file name correctly
    $temp = $image["tmp_name"];
    $imageContents = imagecreatefromjpeg($temp);
    $blankImage = imagecreatetruecolor(100,100);

    if(imagecopyresampled($blankImage, $imageContents, 0, 0, 0, 0, 100, 100, $width, $height)){ 
        header('Content-type: image/jpeg');
        imagejpeg($blankImage, $name); //name the image and output it

        //$this->saveImage($formattedImage); //save the image, commented out for testing purposes
    }
}

编辑 - 我把它弄好了,我不知道imagejpeg的第二个参数是路径,而不是图片的名字。我没有意识到imagejpeg中的第二个参数是路径,而不仅仅是图片的名称。在PHP的网站上,参数2在每个实例中都显示为名称,所以我认为这就是全部。

php image gd
4个回答
2
投票

你没有输出一个内容类型的头来指示浏览器你正在发送JPEG图像数据。添加一个

header('Content-type: image/jpeg');

紧接在你的imagejpeg()调用之前。


1
投票

你是否尝试过使用正确的头?

header('Content-Type: image/jpeg');

你也应该确保在这之前没有输出任何文本。


1
投票

听起来你是在打印jpeg的原始数据。 我不知道你的预期应用是什么,但你也应该这样做。

  • 把$imgContents的内容保存到服务器上的一个文件里,通过HTML图片标签来提供。
  • 输出适当的HTTP头信息,以指示浏览器接收的文件实际上是JPG,而不是HTML标记或文本。header('Content-Type: image/jpeg');
© www.soinside.com 2019 - 2024. All rights reserved.