Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Потеря качества png файла после imagecreatefrompng() и imagepng() php. (http://forum.oszone.net/showthread.php?t=195024)

maasja 26-12-2010 05:28 1574653

Потеря качества png файла после imagecreatefrompng() и imagepng() php.
 
Здравствуйте. возникла необходимость работать с png файлами через php с сохранением прозрачности. Только возникла одна проблема, потеря качества, и я боюсь что ее никак не решить..
Есть png файл "dimm.png" , есть php скрипт image.php следующего содержания:
Код:

<?
header ("Content-type: image/png"); //Передаем браузеру mime-тип выводимых данных, зтп изображение.
$img=imagecreatefrompng('dimm.png'); // Создаем изображение из png файла.
imagesavealpha($img,true); // Сохраняем прозрачность.
imagepng($img); // Выводим рисунок в браузер.
?>

теперь открываем в двух соседних вкладках одно и тоже изображение, только один рисунок будет открыт через php скрипт, а другой напрямую. Если переключать между двумя этими картинками (вкладками Ctrl+Tab), то заметно, что качество рисунка "прогнанного" через скрипт хуже (появляются полоски). Как сохранить качество? Очень надеюсь что это возможно как-то исправить.
Всем большое спасибо.

Sham 26-12-2010 15:18 1574823

тут можно порулить версиями GD (и др. библиотеками), и 3 параметром в imagepng (который качество)
PHP код:

imagepng($imgnull0);//5.1.2+ 

больше имхо никак.

maasja 27-12-2010 00:46 1575237

Sham, Спасибо, но это не помогло. Я кончено понимаю, что GD библиотека, это не фотошоп, но я считаю что она не должна ухудшать качество файла. Это ведь бред!(( Вы видели что оно с картинкой делает? Версия GD 2.0.34.
Я думаю что у других версий все также. Тем более что не могу проверить, так как сижу на хостинге. Разве что использовать для этого денвер.
А какие есть еще библиотеки для работы с изображениями?
спасибо.

Sham 27-12-2010 23:13 1575882

тынц

freese 28-12-2010 11:09 1576114

Цитата:

Цитата maasja
Я кончено понимаю, что GD библиотека, это не фотошоп, но я считаю что она не должна ухудшать качество файла. Это ведь бред!(( »

почему бред? если библиотека проганяя ее через себя уменьшает ее глубину цвета передачи с большего на меньший (24 бит -> 16/8 бит) то потеря качества неизбежна

maasja 03-01-2011 03:42 1579562

freese, по моему библиотека GD умеет работать с 24 бит изображениями.. тем более мой png файл, как показал Photoshop, имеет всего 8 бит. Просто GD - не для графики, а для примитива) не качественная библиотека..

Sham, БОЛЬШОЕ СПАСИБО!!!!
Проблема решилась, использованием библиотеки ImageMagick. Это перейдя по Вашей ссылке я начал копать, что это за библиотеки)) Вообщем, библиотеку GD можно использовать только в примитивных случаях, например для контактов, фейсбуков, твитеров и т.д. , а все случаи где нужна уже более менее серьйозная работа с графикой нужно использовать только ImageMagick, ну или GraphicsMagick (это форк от библиотеки ImageMagick), в них качество картинок куда выше.
На хостинге есть только ImageMagick, прошу чтобы установили GraphicsMagick, и PECL расширения Gmagick и Imagick , для того чтобы я мог использовать их функциями PHP, а то пока что работаю с помощью exec , system и т.д., что не очень удобно, но зато можно использовать все возможности модулей.
Пишут что GraphicsMagick работает быстрее, но вопрос, заметна ли разница, если не пакетно обрабатывать фотки, а только 5-10 штук при загрузке страницы? И правда ли что PECL расширения Gmagick и Imagick, аж так сильно грузят проц, в сравнении с exec() , system() ... ?

Вообщем сравните:
Оригинал ,
GD-lib код image.php:
Код:

<?
header ("Content-type: image/png"); //Передаем браузеру mime-тип выводимых данных, зтп изображение.
$img=imagecreatefrompng('dimm.png'); // Создаем изображение из png файла.
imagesavealpha($img,true); // Сохраняем прозрачность.
imagepng($img); // Выводим рисунок в браузер.
?>

,
ImageMagick код image2.php:

Код:

<?
exec  ("convert dimm.png dimm2.png");
header ("Content-type: image/png");
readfile("dimm2.png");
?>

. Разницу заметно))
Всем спасибо. Жду ответы на вопросы...

Sham 03-01-2011 05:14 1579568

Цитата:

Цитата maasja
заметна ли разница, если не пакетно обрабатывать фотки, а только 5-10 штук при загрузке страницы »

5-10 - не пакетно уже? Зависит от размера картинок, качества обработки и т.д. Если предполагается серьезная нагрузка, то лучше асинхронно.
Цитата:

Цитата maasja
аж так сильно грузят проц »

имхо вопрос практический. Что меньше грузит, то и выбираем. Тут мб слишком много привходящих причин (от кривых драйверов до неправильных системных настроек).


Время: 16:32.

Время: 16:32.
© OSzone.net 2001-