1

我一直在尝试使用 php 调整图像大小,但我在让 imagecreatefromjpeg 函数工作时遇到问题。当我尝试显示图像时,屏幕上会出现一大堆字符,而不是图像。我也没有看到任何错误。

因此,最初我尝试使用此功能调整图像大小。显示了一堆随机字符,所以我想我会简化它以进行调试。

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 中的第二个参数是路径,而不仅仅是图像的名称。在 PHP 的网站上,参数 2 在每个实例中都显示为一个名称,所以我认为这就是全部。

4

3 回答 3

2

您尚未输出内容类型标头以向浏览器指示您正在通过 JPEG 图像数据发送。添加一个

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

在您的 imagejpeg() 调用之前。

于 2012-05-15T01:19:33.363 回答
1

您是否尝试过使用正确的标题?

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

您还应该确保在此之前不输出任何文本。

于 2012-05-15T01:20:41.890 回答
1

听起来您正在打印 jpeg 的原始数据。我不确定您的预期应用程序是什么,但您应该:

  • 将 $imgContents 的内容保存到服务器上的文件中,该文件可以通过 HTML 图像标签提供服务
  • 输出正确的 HTTP 标头以指示浏览器它接收的文件实际上是 JPG,而不是 HTML 标记或文本:header('Content-Type: image/jpeg');
于 2012-05-15T01:22:09.463 回答