Php imagepng не работает

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-файла лишние стояли, да ещё и не по одному разу, в итоге они и попадали клиенту вместе с изображением. В общем, убрал везде лишние пустые строки на концах файлов и всё заработало. Всем спасибо.

Источник

Читайте также:  Звук мотора не работает
Оцените статью