Преобразуйте изображение JPG в GIF и распечатайте его в теге IMG в BASE64.

Это мой фактический код, у меня есть проблемы, связанные с правильной визуализацией изображения gif, сгенерированного на лету для моего php-скрипта. Если я обращаюсь непосредственно к изображению gif, сгенерированному скриптом, браузер показывает его хорошо, но если я пытаюсь использовать свой текущий скрипт через тег img, браузер не может его показать.

Кто-нибудь предложит друзья?

<?php
$src = imagecreatefromjpeg( 'img/ejemplo-2.jpg' );
list( $width, $height ) = getimagesize( 'img/ejemplo-2.jpg' );
$tmp = imagecreatetruecolor( '300', '300');
imagecopyresampled( $tmp, $src, 0, 0, 0, 0, '300', '300', $width, $height );
$imagen = imagegif( $tmp, "filename.gif" );
$data   = "data:image/gif;base64," . base64_encode( file_get_contents( "filename.gif" ) );
?>

<img src="<?php echo $data; ?>" width="300" height="300" />

person Edwin Sandoval    schedule 06.09.2010    source источник
comment
В каком браузере вы тестируете?   -  person Rob Olmos    schedule 06.09.2010
comment
Mozilla Firefox 3.6 поверх Mac OS X Snow Leopard, этот пример хорошо работает в моем браузере: diveintogreasemonkey.org/ шаблоны/add-image.html   -  person Edwin Sandoval    schedule 06.09.2010
comment
Есть ли какая-либо особая причина, по которой вы должны использовать схему data URI? Он поддерживается не во всех браузерах, и вы будете использовать гораздо больше пропускной способности, кодируя данные изображения с помощью base64. Я настоятельно рекомендую ссылаться на ваш PHP-скрипт как на img src, а не просто выгружать данные прямо туда.   -  person Brad    schedule 06.09.2010
comment
Я хочу решить проблемы, связанные с кешем браузера.   -  person Edwin Sandoval    schedule 06.09.2010
comment
Эдвин, кешем браузера следует управлять с помощью соответствующих заголовков HTTP. См.: php.net/manual/en/function.header.php.   -  person Brad    schedule 07.09.2010


Ответы (1)


В то время как Opera 7.2+, Firefox, Safari, Netscape и Mozilla поддерживают URI данных, Internet Explorer 5-7 этого не делает. Тем не менее, как сообщается, Internet Explorer 8, пройдя тест Acid2, делает URL-адреса данных жизнеспособной альтернативой для встраивания небольших декоративных изображений. Существуют обходные пути, которые можно использовать для более старых версий Internet Explorer.

Если вы хотите обойти проблемы с кешем браузера, добавьте случайно сгенерированное число в конец img src :

<img src="test.jpg?12345" />
person Jim Grant    schedule 06.09.2010
comment
Большое спасибо, было очень легко после вашего предложения jejeje :) - person Edwin Sandoval; 07.09.2010