PHP - 无法显示图像,因为它包含错误

美好的一天,</ p>

我继承了一些读取BLOB的遗留代码 从数据库中解析它并返回要在浏览器中显示的jpeg流。 用于在PHP 5.5上运行的遗留代码,它已经部署在PHP 7.1服务器上,我遇到了这个问题。</ p>

我确保php的gd库是 在Apache中安装和加载,我可以验证它是否已启用并使用php信息文件。 我还从DB中转储了值,并确保blob是一个有效的图像,它是。 由于某种原因,我无法获得提供图像的功能。</ p>

以下是从数据库中检索数据并存储在 $ image中之后的函数代码 </ code> </ p>

  $ image = imagecreatefromstring($ image); 

$ originalWidth = imagesx($ image);
$ originalHeight = imagesy($ image) ;

header('Content-type:image / jpeg');
if($ originalWidth == $ width&amp;&amp; $ originalHeight == $ height)
{
if($ thumb&amp;&amp; $ width&gt; = $ originalWidth)echo imageautocrop($ image);
否则echo imagejpeg($ image);
}
else
{
$ ratio = $ originalHeight / $ originalWidth;

$ height = $ width * $ ratio;

$ height = round($ height);
$ new = imagecreatetruecolor($ width,$ height);

imagecopyresampled($ new,$ image,0,0, 0,0,$ width,$ height,imagesx($ image),imagesy($ image));
imageantialias($ new,true);

if($ thumb)imageautocrop($ image);
else imagejpeg($ new,null,$ quality);

imagedestroy($ new);
}
</ code> </ pre>

我有trie d使用精确尺寸以及裁剪尺寸,两者都不起作用。 </ p>
</ div>

展开原文

原文

Good day guys,

I inherited some legacy code that reads a BLOB from the database, parses it and returns the jpeg stream to be displayed in the browser. The legacy code used to run on PHP 5.5, it has since been deployed on a PHP 7.1 server where I am running into the issue.

I have made sure that the gd library for php is installed and loaded in Apache, I can verify that it is enabled and working with the php info file. I have also dumped the value from the DB and made sure the blob is a valid image, which it is. For some reason or another I cannot get the function to provide the image.

Here is the code for the function after the data has been retrieved from the DB and stored in $image

$image = imagecreatefromstring($image);

$originalWidth = imagesx($image);
$originalHeight = imagesy($image);

header ( 'Content-type:image/jpeg' );
if($originalWidth == $width && $originalHeight == $height)
{
  if($thumb && $width >= $originalWidth) echo imageautocrop($image);
  else echo imagejpeg($image);
}
else
{
  $ratio = $originalHeight/$originalWidth;

  $height = $width*$ratio;

  $height = round($height);
    $new = imagecreatetruecolor($width, $height);

    imagecopyresampled($new, $image, 0, 0, 0, 0, $width, $height, imagesx($image),imagesy($image));
    imageantialias($new, true);

  if($thumb) imageautocrop($image);
  else imagejpeg($new, null, $quality);

  imagedestroy($new);
} 

I have tried using the exact dimensions as well as the cropped dimensions, neither of which work.

douchen2595
douchen2595 -没问题,谢谢你的帮助。希望还有另一种解决办法。
大约 2 年之前 回复
dongrou2920
dongrou2920 这是我能找到的唯一其他答案。抱歉。
大约 2 年之前 回复
doupu1957
doupu1957 我将此作为imagejpeg的输出:pastebin.com/dgAxgh1x@IncredibleHat-无法重新编译PHP,这是在共享托管环境中
大约 2 年之前 回复
doufan1899
doufan1899 好的,这可能有所帮助:stackoverflow.com/a/5756241/2960971
大约 2 年之前 回复
douya7282
douya7282 -我已经完成了,我得到的输出是Array([GDVersion]=>2.2.5[FreeTypeSupport]=>1[FreeTypeLinkage]=>withfreetype[GIFReadSupport]=>1[GIFCreateSupport]=>1[JPEG支持]=>1[PNG支持]=>1[WBMP支持]=>1[XPM支持]=>1[XBM支持]=>1[WebP支持]=>1[JIS映射日语字体支持]=>)
大约 2 年之前 回复
douyi5961
douyi5961 好。这可以解释损坏的图像,因为PHP正在吐出错误(这不是图像数据)。要弄清楚GD为什么没有设置,所以这些功能存在。做一个print_r(gd_info());在一个空白的脚本上,然后点击它。
大约 2 年之前 回复
duanchu0031
duanchu0031 -它发生在第一个,第二个失败,调用未定义的函数imageantialias(),这是奇怪的,因为我已经将GD扩展包括在php和apache中。
大约 2 年之前 回复
duanchongzi9997
duanchongzi9997 但是哪一个,有多个。首先是吗?第二?当您启用完整报告时,php是否会抛出任何通知或警告?添加ini_set('display_errors',1);ini_set('display_startup_errors',1);使用error_reporting(E_ALL);暂时查看是否存在一些潜在警告。
大约 2 年之前 回复
doushiposong30622
doushiposong30622 分享你BLOB的一部分......
大约 2 年之前 回复
doushan1850
doushan1850 我在浏览器中收到的错误是“图像...因为包含错误而无法显示”。它发生在我回显imagejpeg时
大约 2 年之前 回复
douhuzhi0907
douhuzhi0907 究竟是什么错误,它发生在哪里。它是imagecreatefromstring的第一个功能吗?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐