IE6 - GD和PHP图像输出(ie6 - gd and php image outputti

2019-10-29 16:34发布

我试图显示与灰度过滤图像。 这里是我的代码:

$images = glob('gallery/*small*');
shuffle($images);
array_splice($images, 3);

$imgHandles = array();
$imgBuffered = array();
for( $i = 0; $i < 3; $i++)
{  
   $imgHandles[$i] = imagecreatefromstring( file_get_contents($images[$i]) ); 
   imagefilter( $imgHandles[$i], IMG_FILTER_GRAYSCALE ); 

   ob_start();
   imagepng( $imgHandles[$i] ); 
   $imgBuffered[$i] = ob_get_contents();
   ob_end_clean();
   imagedestroy( $imgHandles[$i] ); 
} 

和输出:

for( $i = 0; $i < 3; $i++ )
{  
   echo "<a href=\"gallery.php\">
   <img class=\"photo\" src='data:image/png;base64,".base64_encode( $imgBuffered[$i] )."' /></a>";                                                                                    
}

在歌剧,FF,铬,Safari浏览器,一切都很好,但IE6不显示图像。 为什么?

我的页面进行这样的代码: http://dean.edwards.name/weblog/2005/06/base64-ie/我看图片,但他们隐藏几秒钟......我真的不知道为什么。 你能帮我这个东西?

Answer 1:

数据URI方案中不支持IE6(IE7也不显然) 。 你需要的地方的URL保存图像,并提供给保存的图像作为img src ,或者你需要生成它在飞行中通过一个单独的脚本,做一些像img src="path/to/image_generator.php"



Answer 2:

ceejayoz的方法可能是最好的,他\她是在说,该方案不支持IE6正确的。 下面是一个关于如何做到这一点在IE页面 ,但我希望你有一个很好的理由不这样做的/path/to/image_generator.php版本。

要做到这一点,你需要创建一个脚本,只是没有imagepng ,例如,然后发送指示浏览器有问题的图像是PNG头。 例如,

img_generate.php

$images = glob('gallery/*small*');

$img_to_generate=intval($_GET['image_to_generate']);



$imgHandle = imagecreatefromstring( file_get_contents($images[$img_to_generate]) ); 
imagefilter( $imgHandle, IMG_FILTER_GRAYSCALE ); 

header('Content-type:image/png');//tell the browser what to expect
imagepng( $imgHandle ); //output the image
imagedestroy( $imgHandles ); //clean up

然后在你的HTML

<img src="/path/to/img_generate.php?image_to_generate=0" alt="image 0" />
<img src="/path/to/img_generate.php?image_to_generate=1" alt="image 1" />
<img src="/path/to/img_generate.php?image_to_generate=2" alt="image 2" />


文章来源: ie6 - gd and php image outputting