ie6 - вывод gd и php изображений - PullRequest
0 голосов
/ 22 сентября 2009

Я пытаюсь показать изображение с использованием градаций серого. Вот мой код:

$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, chrome, safari все хорошо, но ie6 не показывает изображения. Почему?

Я сделал код как на странице: http://dean.edwards.name/weblog/2005/06/base64-ie/ Я вижу картинки, но через несколько секунд они прячутся ... Я действительно не знаю почему. Можете ли вы помочь мне с этим материалом?

Ответы [ 2 ]

4 голосов
/ 22 сентября 2009

Схема URI данных не поддерживается в IE6 (по-видимому, ни в IE7) . Вам нужно будет сохранить изображение где-нибудь и указать URL-адрес сохраненного изображения как img src, либо вам нужно будет сгенерировать его на лету с помощью отдельного сценария и выполнить что-то вроде img src="path/to/image_generator.php".

1 голос
/ 22 сентября 2009

Подход 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...