用php显示图像会产生垃圾输出

时间:2014-07-16 18:07:31

标签: php

我正在尝试使用以下代码合并两个png图像:

$imgl = "myFirstImage.png";
$img2 = "mySecondImage.png";

// Create image instances
$dest = imagecreatefrompng($imgl);
$src = imagecreatefrompng($img2);
imagecolortransparent($src, imagecolorat($src, 0, 0));

// Copy and merge
$src_x = imagesx($src);
$src_y = imagesy($src);
imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);

// Output and free from memory
header('Content-Type: image/png');
imagepng($dest);

imagedestroy($dest);
imagedestroy($src);

然而,输出是完全垃圾。它看起来像这样:

PNG IHDR#5PIDATxœìÝÏ“dÕyøø>ÕD¨xÛ¶d1~Ýt”»(GmýxßDH[-g'°ý‡X +ë''ðš&mf4²QlC»aÔ'°©±•]•³H”¤2³²nÞ¼÷žçœóù„ÃÑ¢»«NWeÝsóùÞç9“ù|Þtr”z@Æ$ @w—S/Ho2™œ÷[¬»M”¡;“ “〜¹'@μ$PŽÑr... - \ ^'ÈXïÑ”O =ßí/¾õæ+þW('¤2sxºÐ9Nèæ¼ÂÅÊie'.Œœ+'œales€¸Å¾W W·€!´°ÃZêàŠÙ‘4@8ûyE;¬¦.MIÒ>c(&]ØJä‘4@z†óˆ >I¤Ô2c¨-Ø 'Œ\²I$ èl9¸p@’U›ŒAÀp!-‡¤FraÆØ-¼“4Ààvg†Ã½õæ+.eŠ¤$ c”¼'4@ÿJJÅyÑ0>IôlGÌ`ÇjsÃ÷¯Þü>ûï¤]“MÒ½'1”²È¾õfÓ4ÂŽ¤zéøá +ß¹÷Þâ...... [继续页面]

我认为它可能是一个标题问题,但是在代码中设置为png。如何解决这个问题,以便渲染图像?

1 个答案:

答案 0 :(得分:0)

我将这些标题用于图像:

header('Content-type: image/png');
header('Content-transfer-encoding: binary');

我可以看到您使用了“内容类型”'标题,但内容转移编码'标头丢失了。也许这就是问题所在?否则关闭您的浏览器(完全)并再次打开它,我发现在某些情况下有帮助。这是一个缓存问题,因为' file-date'不见了。您可以添加它,如下所示:

header('Last-Modified: '.gmdate('D, d M Y H:i:s',time().' GMT'); 

每次都会通知浏览器的缓存文件已更改。