Создание PNG в PHP (отличается ли это от gif и jpg?)

У меня есть форма загрузки изображения, которая должна принимать типы изображений (PNG, JPEG, GIF), изменять их размер и затем сохранять по пути.

По какой-то причине я не могу заставить работать типы файлов PNG, он отлично работает с JPEG/GIF, и файл копируется, поэтому похоже, что это как-то связано с тем, как я создаю PNG.

Требуются ли для создания PNG в PHP другие параметры или параметры? Некоторый пример кода строк, которые создают изображение:

$src = imagecreatefrompng($uploadedfile);
imagecreatetruecolor($newWidth,$newHeight)
imagecopyresampled($tmp,$src,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagepng($tmp,$destinationPath."/".$destinationFile,100);

Одни и те же команды работают для JPG и GIF.


person Community    schedule 06.10.2008    source источник


Ответы (4)


Вам нужно посмотреть, как построен ваш PHP. Например:

GD Support  enabled
GD Version  bundled (2.0.28 compatible) 
PNG Support     enabled 

Если у вас не скомпилирована поддержка PNG, вам необходимо обновить ее.

person DreamWerx    schedule 06.10.2008
comment
проверено, и у меня есть поддержка PNG: 'Поддержка чтения GIF' => логическое значение true 'Поддержка создания GIF' => логическое значение true 'Поддержка JPG' => логическое значение true 'Поддержка PNG' => логическое значение true спасибо за ответ, хотя... думал это было бы так - person ; 07.10.2008

Я понял проблему, просто проблема в том, что я не читаю API: P.

в отличие от imagejpg() или imagegif(), imagepng() принимает целое число от 0 до 9 для сжатия. поэтому я передал 100 в качестве параметра, думая, что качество будет выше, но вместо этого, я думаю, я рассматривал его как максимальное сжатие. Передача 0 решила проблему.

Может быть, API изменился с версий PHP?

person Community    schedule 06.10.2008

Вы начинаете с изображений PNG-8? Есть некоторые проблемы с PNG-8 и PNG-24 при работе с PHP. Убедитесь, что поддержка PNG скомпилирована, а затем посмотрите на это решение к проблеме PNG-8.

person Chris Bartow    schedule 06.10.2008
comment
Пробовал и 8 и 24 бит, разницы нет. Похоже, что-то не так с imagepng(). Если я просто использую imagejpeg() в png, он действительно работает нормально... - person ; 07.10.2008

проверено, и у меня есть поддержка PNG:

'Поддержка чтения GIF' => логическое значение true 'Поддержка создания GIF' => логическое значение true 'Поддержка JPG' => логическое значение true 'Поддержка PNG' => логическое значение true

спасибо за ответ, хотя... думал, что это будет

person Community    schedule 06.10.2008