2008-10-06 2 views
0

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

По какой-то причине я не могу заставить файлы 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.

ответ

2

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

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

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

+0

проверил и у меня есть поддержка PNG: «Поддержка GIF чтения» => булева истинно «GIF Создать поддержку» => булевой правды «JPG Поддержку» => булевой правды «PNG Поддержки» => булево истинные спасибо за ответ, хотя ... думал, что это будет – 2008-10-06 23:07:43

0

Вы начинаете с изображений в формате PNG-8? Есть некоторые проблемы с PNG-8 и PNG-24 при работе с PHP. Убедитесь, что поддержка PNG скомпилирована, затем возьмите look at this persons solution to the PNG-8 problem.

+0

Я пробовал как 8, так и 24 бит, и это не имеет значения. Кажется, что что-то не так с imagepng(). Если я просто использую imagejpeg() на png, он действительно работает нормально ... – 2008-10-06 23:06:58

0

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

'GIF Поддержка чтения' => логическое значение верно 'GIF Создание поддержки' => булева истинно 'JPG Поддержка' => булева истинно 'PNG Поддержка' => булева истинные

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

1

я понял, проблема, только проблема я не читал API: P.

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

Возможно, API изменился с PHP-версий?

Смежные вопросы