Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод изображений, размеры файлов GIF
 
 автор: alexxspb   (07.08.2009 в 13:20)   письмо автору
 
 

При программировании вывода изображений возникла странность с выводом изображений GIF формата.
В Photoshop CS4 (ОС Windows 7) было обработано изображение и сохранено с количеством цветов равным 32. Размер: 1.17kb.
При выводе с помощью этого кода:
$im = imagecreatefromgif('/images/'.$img_type.'_'.$size.'.gif') OR die();
        header ("Content-type: image/gif");
        imagegif($im);
        imagedestroy($im);

размер изображения стал 4.3kb (в браузере).
Что меня удивило, но, решив, что PHP создает GIF с 256 цветами, принял как неизбежное.

Но, написав в конце предыдущего кода die('не пустая строка'); , был удивлен еще больше - размер изображения в браузере стал равен 1.22kb, что уже намного ближе к оригинальному.

Вопрос - почему так происходит и правильно ли прерывать выполнение скрипта во время вывода изображений?

  Ответить  
 
 автор: Visavi   (07.08.2009 в 13:32)   письмо автору
 
   для: alexxspb   (07.08.2009 в 13:20)
 

вы по сути новое изображение создаете
если вам просто скриптом выводить надо можно делать примерно так

$filename = file_get_contents('/images/'.$img_type.'_'.$size.'.gif');
header('Content-Disposition: inline; filename="'.$img_type.'_'.$size.'.gif"');
header("Content-type: image/gif");
header("Content-Length: ".strlen($filename));
echo $filename;


это один и примеров, а по идее лучше выводить через
http://ru2.php.net/manual/en/function.fpassthru.php

  Ответить  
 
 автор: alexxspb   (07.08.2009 в 14:32)   письмо автору
 
   для: Visavi   (07.08.2009 в 13:32)
 

Спасибо за информацию, действительно, буду обычные изображения выводить через fpassthru() (благо, размер изображения становиться в таком случае реальным), остальные у меня генерируют изображения с данными.

  Ответить  
 
 автор: Trianon   (07.08.2009 в 14:31)   письмо автору
 
   для: alexxspb   (07.08.2009 в 13:20)
 

а посмотреть в файл результата?
правильно - не выводить в поток изображения ничего, кроме изображения.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования