PHP — imagepng not working properly
Well guys, first, here is my code:
We changed the servers, and now, I get this:
What is happening?
EDIT
Setting PHP errors to ON, I get this warning:
And in line 68 we have:
EDIT 2
Taking a deeper look into assinatura.php, I’ve found out a BOM before the PHP tag, but now how to remove it?
3 Answers 3
Well! there was a BOM before the PHP tag. How to remove it, is very very simple. I’m using Adobe Dreamweaver, so here are the steps:
1 — Press CTRL + J (Page Properties);
2 — Go to the title/encoding tab, and uncheck the «Include Unicode Signature» checkbox;
Save the document, and the magic happens. Have no idea why I didn’t get this error in the other server!
And if you don’t use Adobe Dreamweaver, the Notepad++ can convert to UTF-8 without BOM (Byte Order Mask):
The output is correct but its not being recognized as a PNG. The problem is the header is not being correctly set, which is why it is not being recognized. Probably because headers are already set.
Remove ob_start() and see if that fixes it.
Otherwise check the existence of anything that would put another header on it, such as a header PHP file being added by .htaccess.
EDIT: The PHP error confirms this is the case. Something is already setting file headers. It is very likely to be .htaccess adding a header to every PHP file in this directory. This is your problem, as I do not see any other headers or echos on this script.
Источник
Не работает функция imagecreatefrompng
Только вот мне выдает ошибку «imagecreatefrompng(bg.png): failed to open stream: No such file or directory. »
И после этого лезет куча ошибок, связанных с функциями из этих функций. С чем это может быть связано?
проверил GD, думал с ним проблема, но, кажется, все нормально. Вот что выдает var_dump:
array(13) < ["GD Version"]=>string(26) «bundled (2.1.0 compatible)» [«FreeType Support»]=> bool(true) [«FreeType Linkage»]=> string(13) «with freetype» [«T1Lib Support»]=> bool(false) [«GIF Read Support»]=> bool(true) [«GIF Create Support»]=> bool(true) [«JPEG Support»]=> bool(true) [«PNG Support»]=> bool(true) [«WBMP Support»]=> bool(true) [«XPM Support»]=> bool(true) [«XBM Support»]=> bool(true) [«WebP Support»]=> bool(true) [«JIS-mapped Japanese Font Support»]=> bool(false) >
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Imagecreatefrompng() — PNG images
Здравствуйте, прошу помощи, имеются 2 изображения, куски можете видеть ниже, но функция.
imagecreatefrompng работа с уже открытой картинкой
Здравствуйте, у меня есть функция которая работает с изображением открывая его при помощи.
imagecreatefrompng и замена прозрачности на белый фон
$im = imagecreatefrompng(‘../images/buttons/item.png’); imagepng($im); Заменяет прозрачность.
Теперь мне выводится огромная куча каких-то неразборчивых символов.
И еще ошибка: Warning: Cannot modify header information — headers already sent by (output started at C:\xampp\htdocs\copyright\index.php:122) in C:\xampp\htdocs\copyright\php\counter.php on line 44
Видимо, из-за вот этого
Функция imagecreatefrompng создаёт виртуальный объект image из файла который в параметре этой функции, в дальнейшем этот виртуальный image можно использовать в других функциях для редактирования (изменения) того что в этом image. Т.е. например у Вас есть картинка, вы её хотите дополнить текстом, вы создаёте image с помощью этой функции и другими функциями добавляете текст, затем вы либо сохраняете изменённую картинку либо выводите её сразу в вывод. Можно вообще без функции imagecreatefrompng создать image и нарисовать там что-то своё.
Добавлено через 1 минуту
Да хеадеры у Вас уже отправлены, зачем их повторно отправлять?
Источник
PHP — imagepng не работает должным образом
Ну, ребята, во-первых, вот мой код:
Мы поменяли серверы, и теперь я получаю следующее:
ИЗМЕНИТЬ
Установив для ошибок PHP значение ON, я получаю следующее предупреждение:
А в строке 68 мы имеем:
ИЗМЕНИТЬ 2
Заглянув глубже в assinatura.php, я обнаружил спецификацию перед тегом PHP, но как теперь ее удалить?
3 ответа
Хорошо! перед тегом PHP была спецификация. Как его удалить, очень-очень просто. Я использую Adobe Dreamweaver, поэтому вот шаги:
1 — Нажмите CTRL + J (Свойства страницы);
2 — Перейдите на вкладку заголовок / кодировка и снимите флажок «Включить подпись Unicode»;
Сохраните документ, и волшебство произойдет. Понятия не имею, почему я не получил эту ошибку на другом сервере!
И если вы не используете Adobe Dreamweaver, Notepad ++ может конвертировать в UTF-8 без BOM (маска порядка байтов):
Вывод правильный, но он не распознается как PNG. Проблема в том, что заголовок задается неправильно, поэтому он не распознается. Видимо потому, что заголовки уже установлены.
Удалите ob_start() и посмотрите, исправит ли это его.
В противном случае проверьте наличие чего-либо, что могло бы поместить в него другой заголовок, например, заголовочный файл PHP, добавляемый с помощью .htaccess.
РЕДАКТИРОВАТЬ: ошибка PHP подтверждает, что это так. Что-то уже устанавливает заголовки файлов. Скорее всего, это будет .htaccess, добавляющий заголовок к каждому файлу PHP в этом каталоге. Это ваша проблема, поскольку я не вижу других заголовков или эхо в этом скрипте.
Добавьте ob_start(«ob_gzhandler»); . Это может решить вашу проблему. Где твои изображения? В подкаталоге или в базе данных?
Источник
PHP GD сгенерированное изображение Изображение не может быть отображено, поскольку оно содержит ошибки в Firefox
При создании изображения с помощью PHP, например, добавление водяного знака на сохраненное изображение сервера, с использованием кода ниже или аналогичного с JPEG вместо PNG, изображение может вообще не создаваться и вызывать ошибку, непосредственно видимую в Firefox, но не на Chrome.
Такой код, несмотря на работу на некоторых серверах, теперь может работать над некоторыми другими, иногда по неясным причинам. В моем случае он работал отлично нормально локально, но при ошибке ниже на интернет-сервере изображение не отображалось, поскольку оно содержит ошибки.
Проблема может быть вызвана несколькими причинами: вот некоторые из них:
Выход уже установлен ранее.
Настоящая ошибка в генерации изображений.
Используется неправильный тип изображения.
Библиотека изображений не установлена.
Выход уже установлен ранее
Даже если это не преднамеренно, может быть, например, что другие предыдущие сценарии содержали пробелы в конце — чтобы избежать этой ошибки, убедитесь, что, как рекомендует PHP, не закрывать скрипты с помощью тега PHP end>
Затем, прежде чем использовать функцию заголовка, используйте следующий код, чтобы убедиться, что любой ранее установленный заголовок отбрасывается
А также эта функция, чтобы убедиться, что выходной сигнал не был сформирован перед заголовком и изображением
Это решило проблему в моем случае, и изображение было правильно отображено снова.
Настоящая ошибка в генерации изображений
Если во время генерации изображения возникла настоящая ошибка, убедитесь, что PHP установлен для отображения всех возможных ошибок и проверки соответствующих журналов, чтобы иметь возможность отслеживать и разрешать его.
Следующий код заставит PHP сообщать обо всех ошибках в журнале:
Затем вы можете узнать, что сообщалось о некоторых ошибках, даже если они не отображались в выходном html из-за конфигурации сервера.
Используется неправильный тип изображения
Убедитесь, что используемые вами типы изображений верны, например, используя этот код, чтобы различать png и jpeg.
Также убедитесь, что заголовок правильно соответствует используемому выходу, в зависимости от используемой функции генерации изображения
Библиотека изображений не установлена
Чтобы убедиться, что библиотеки изображений установлены. Для этого запустите функцию phpinfo (); в скрипте и проверить вывод для следующего значения, связанного с PHP GD, графической библиотекой, которая используется такими функциями, как imagepng ();
В случае отсутствия пакетов способ его решения зависит от вашей локальной конфигурации либо путем добавления пакета с помощью команд PEAR, либо с помощью встроенного в веб-узел решения для установки пакета.
Что делать, если imagejpeg или imagepng не работает
В NotePad ++ откройте файл PHP, который вызывает функцию imagepng, и сохраните его после перехода в меню «Кодирование»> «Преобразовать в UTF-8 без спецификации».
В DreamWeaver перейдите в Свойства страницы> Заголовок / Кодировка> снимите флажок Включить подпись Unicode (BOM).
Когда PHP imagejpeg или imagepng не работает, это, скорее всего, связано с тем, что файл PHP был закодирован с помощью спецификации, ведомости материалов, и, следовательно, дополнительная информация отправляется вместе с изображением перед данными изображения.
Функции PHP imagejpeg и PHP imagepng — это функции, используемые для отправки кода изображения непосредственно в ответе сервера.
Источник
Php imagepng не работает
Судя по всему к контенту добавляется что-то ещё
Посмотри тут — у человека добавлялся UTF BOM заголовок через инклуд
ну и попробуй ещё как аттач отдавать
| От: | os24ever | |
Дата: | 06.05.12 19:00 | ||
Оценка: | 3 (1) |
A>Заодно и исходный файл проверь, нет ли у него УТФного заголовка.
Да, скорее всего перед данными либо Byte Order Mark приходит либо перевод строки.
| От: | x64 | http://x64blog.name |
Дата: | 06.05.12 17:15 | ||
Оценка: |
Привет.
Аж задолбался уже, пишу:
До броузера данные доходят, и заголовки тоже, но картинку не отображает, ни IE, ни Opera, ни Chrome. Если сохранить полученный контент на диск, то он вроде как нужного размера и даже на правду вроде как похоже (ну там сигнатура вначале «.PNG. » и всё такое), но просмотрщик изображений говорит, что-де заголовок не распознан, т.е. данные по факту повреждённые. В переменной $image валидное изображение, это точно, создавал через imagecreatefrompng(). На сайте PHP был, в гугле тоже был, воркэраунды различные испробовал, и хак с ob_start/ob_end_clean, и длину контента отправлял клиенту, — бесполезно, уже несколько часов сижу парюсь, не понимаю ничего.
Версия PHP 5.4.0.
Система Windows 7 SP1 x64.
Сервер Srv, который встроен в PhpED.
Что тут не так?
Спасибо.
| От: | avpavlov |
Дата: | 06.05.12 18:47 | |
Оценка: |
A>Посмотри тут — у человека добавлялся UTF BOM заголовок через инклуд
Заодно и исходный файл проверь, нет ли у него УТФного заголовка.
| От: | x64 | http://x64blog.name |
Дата: | 06.05.12 20:05 | ||
Оценка: |
A>Посмотри тут — у человека добавлялся UTF BOM заголовок через инклуд
Однако же, ну я и придурок конченный. Короче, да, действительно, проблема оказалась во включаемых .php-файлах, но не в маркере (у меня utf-8 без сигнатуры везде), а в символах перевода строки \r\n, они у меня в конце каждого .php-файла лишние стояли, да ещё и не по одному разу, в итоге они и попадали клиенту вместе с изображением. В общем, убрал везде лишние пустые строки на концах файлов и всё заработало. Всем спасибо.
Источник