Что такое код imagecreatefrompng


imagecreatefrompng

imagecreatefrompng — Create a new image from file or URL

Описание

imagecreatefrompng() returns an image identifier representing the image obtained from the given filename.

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen() . Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Supported Protocols and Wrappers.

Список параметров

Path to the PNG image.

Возвращаемые значения

Returns an image resource identifier on success, FALSE on errors.

Примеры

Пример #1 Example to handle an error during loading of a PNG

function LoadPNG ( $imgname )
<
/* Attempt to open */
$im = @ imagecreatefrompng ( $imgname );

/* See if it failed */
if(! $im )
<
/* Create a blank image */
$im = imagecreatetruecolor ( 150 , 30 );
$bgc = imagecolorallocate ( $im , 255 , 255 , 255 );
$tc = imagecolorallocate ( $im , 0 , 0 , 0 );

imagefilledrectangle ( $im , 0 , 0 , 150 , 30 , $bgc );

/* Output an error message */
imagestring ( $im , 1 , 5 , 5 , ‘Error loading ‘ . $imgname , $tc );
>

header ( ‘Content-Type: image/png’ );

$img = LoadPNG ( ‘bogus.image’ );

imagepng ( $img );
imagedestroy ( $img );
?>

Примечания

Версии PHP для Windows до PHP 4.3.0 не поддерживают возможность использования удаленных файлов этой функцией даже в том случае, если включена опция allow_url_fopen.

Функция Imagecreatefrompng

Функция Imagecreatefrompng создает новое изображение из PNG файла или URL.
Функция Imagecreatefrompng возвращает идентификатор изображения, представляющего изображение полученное из файла с заданным именем.

Для этой функции вы можете использовать URL в качестве имени файла, если была включена директива Allow_url_fopen.

Параметр Filename являет собой путь к изображению PNG.

Функция Imagecreatefrompng возвращает ресурс изображения в случае успеха, или FALSE в случае ошибки.

Пример использования:
Результатом примера будет указатель на ресурс изображения:

imagecreatefrompng ошибка для QR-кода, созданного страницей PHP при использовании TCPDF

Это странно, первая строка следующего кода (TCPDF — код создания PDF) работает, но иногда НЕ работает без видимой причины. Я ненавижу случайные ошибки. При сбое сообщение об ошибке совпадает со строкой 3, показанной ниже.

Вторая строка отлично работает. Я считаю, что это лучший способ кодирования, но не знаю почему.

Третья строка НЕ ​​работает, но я думаю, что была бы более стабильной, если бы она работала.

Предупреждение:
imagecreatefrompng (/ var / www / vhosts / путь к файлу / tcpdf /../../ путь / включает / php / phpqrcode.php? text = textforqrcode): не удалось открыть поток: нет такого файла или каталога.

../../ используется для доступа к правильному каталогу, я знаю, что это правильно, так же как и для строки 2, включает и образы находятся на одном уровне в структуре каталога.

Дело в том, что путь правильный. Я предполагаю, что это не работает, потому что это файл, созданный php-файлом, но он работает в строке 1, где он создается как некий объект http.

Вот код, который я пробовал до сих пор:

Илон Маск рекомендует:  Segread читать сегментные регистры

Я также пробовал это, но это не нравится, похожее сообщение об ошибке:

(../../../../ потому что изменился относительный путь).

У меня такое чувство, что я бьюсь головой о стену …

Решение

Вы не можете ссылаться на локальный файл с параметрами строки запроса. Если phpqrcode.php ожидает text param для получения от GET param, вам нужно будет загрузить его через сервер. Если вы обращаетесь к файлу напрямую, он не будет запускать код PHP, а вместо этого даст вам файл PHP напрямую. И в этом случае он даже не может найти файл, потому что ищет файл с именем phpqrcode.php?text=asd не phpqrcode.php ,

Насколько я вижу, первый способ — правильный, но если у вас возникли проблемы с ним, нам нужно знать, какую библиотеку вы используете для генерации QR-кода.

Другие решения

Как указано в комментариях, я использовал copy () для сохранения изображения на сервере, использовал изображение с сервера в PDF, а затем удалил изображение в конце сценария. Simples! Спасибо @onik

Что такое код imagecreatefrompng

Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

Репутация: нет
Всего: 1

Код
> 16) & 0xFF;
$g = ($rgd >> 8 ) & 0xFF;
$b = $rgd & 0xFF;
//вернуть код цвета
printf(‘#%02s%02s%02s’,dechex($r),dechex($g),dechex($b));
?>

В чем тут дело говорит что нет такой функции( imagecreatefrompng)?


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: нет
Всего: 4

Видимо, GD собрана без поддержки PNG

FractalizeR
Дата 6.2.2008, 19:05 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

imagecreatefrompng

(PHP 3>= 3.0.13, PHP 4)

imagecreatefrompng — создаёт новое изображение из файла или URL.

Описание

resource imagecreatefrompng (string filename)

imagecreatefrompng() возвращает идентификатор изображения, полученного из данного файла filename.

imagecreatefrompng() возвращает пустую строку при ошибке. Также выводит сообщение об ошибке, которое отображается в браузере как разорванная ссылка. Для облегчения отладки следующий пример выведет PNG ошибки:

imagecreatefrompng (и imagecreatefromstring) приводит к фатальной ошибке UNRECOVERABLE

Когда я пытаюсь использование PHP-GD функции на некорректных PNG изображений, я неисправимая ошибка PHP. Казалось бы , какая — то ошибка, потому что в соответствии с документацией функций ( imagecreatefrompng например):

* @return resource an image resource identifier on success, false on errors.

Но когда я пытаюсь сделать это с моим некорректным изображением, у меня есть:

Fatal error: imagecreatefrompng(): gd-png: fatal libpng error: Read Error: truncated data in /var/www/common/models/Utils.php on line 61

Код, который приводит к этой ошибке проста:

Код не выполняется после этой строки.

То же самое поведение для imagecreatefromstring при попытке создать изображение из той же строки.

Я не могу «исправить» эту картину, потому что предоставленный пользователем, так что мне нужно, чтобы справиться с этим дела.

Я пытался использовать try. catch блок , как это:

Но только выводит скрипт «Пуск», а затем умирает, и показывает описание ошибки я написал выше.

Ubuntu 16.04.2, PHP 7.0, php7.0-Г.Д. расширение, оба последняя версия.

Поэтому я не могу с этим справиться Try . Catch блока, и я не знаю, как обращаться или исправить его на всех. Есть идеи?

UPD: Вроде бы действительно странно ошибка с окружающей средой, потому что , когда я запускаю этот код под Windows (с PHP 7.0) производит правильную ошибку «Warning».

Загрузка imagecreatefrompng на сервер

Я пытаюсь загрузить изображение, созданное из toDataURL Java, отправленное в форме автоматически с javascript, захваченное PHP и преобразованное с помощью imagecreatefrompng() и назначенное переменной.

Вот код для начала:

код JavaScript:

PHP-код:

Когда я показываю изображение в виде raw img с помощью imgData , все выглядит отлично, но я хочу создать фактическое изображение из этих данных и загрузить его в каталог в моей базе данных, используя имя, созданное $newname В. Можно ли это сделать? Правильно ли я это делаю? Я знаю move_uploaded_file() , что предназначен для перемещения приостановленного файла из элемента формы файла в новое место, но в моем исследовании я не мог найти другого метода, который делает это.

1 ответ

Есть пара вещей, которые не будут работать:

  1. Вы не можете писать текст поверх, повторяя некоторые html, вы должны использовать gdlib текстовую функцию, как imagettftext() . Обратите внимание, вы должны указать на файл шрифта, чтобы использовать его (ресурс здесь) . Если вы не пытаетесь написать это echo (» Image rendered. — » . $newname . » «); поверх изображения, игнорировать эту часть сценария, однако, вы все еще не можете сделать это, потому что, если вы Эхо что-либо (или есть пустое пространство перед вашим сценарием), он будет поврежден изображение.
  2. Вы должны использовать imagepng() (ресурс здесь), чтобы сохранить файл.

Что такое код imagecreatefrompng

3172 просмотра

3 ответа

103 Репутация автора

Когда я пытаюсь использовать функции php-gd на некорректных изображениях png, у меня появляется фатальная ошибка PHP. Кажется, это какая-то ошибка, потому что согласно документации по функциям ( imagecreatefrompng например):

* @return resource an image resource identifier on success, false on errors.

Но когда я пытаюсь сделать это с моим неправильным изображением, у меня есть:

Fatal error: imagecreatefrompng(): gd-png: fatal libpng error: Read Error: truncated data in /var/www/common/models/Utils.php on line 61

Код, который приводит к этой ошибке, прост:


После этой строки код не выполняется.

То же самое происходит imagecreatefromstring при попытке создать изображение из той же строки.

Я не могу «исправить» эту картину, потому что она предоставлена ​​пользователем, поэтому мне нужно разобраться с этими случаями.

Я пытался использовать try. catch блок, как это:

Но скрипт выдает только «start», а затем умирает и показывает описание ошибки, которое я выложил выше.

Ubuntu 16.04.2, PHP 7.0, расширение php7.0-gd, обе являются последней версией.

Так что я не могу справиться с этим с помощью try . catch, и я вообще не знаю, как с этим справиться или исправить. Есть идеи?

UPD: Кажется, это действительно странная ошибка со средой, потому что когда я запускаю тот же код в Windows (с PHP 7.0), он выдает правильную ошибку «Warning».

UPD2: похоже, это свежая ошибка https://bugs.php.net/bug.php? > Автор: SeRRgIO Источник Размещён: 18.07.2020 06:41

Ответы (3)

1 плюс

103 Репутация автора

Кажется, это свежая ошибка (и, возможно, не закрытая): https://bugs.php.net/bug.php? >

Поэтому, пока я не найду лучший способ, я думаю, что это единственный способ проверить изображение. Это плохой код, и я знаю это, но у меня нет других идей. Идея состоит в том, чтобы попытаться создать изображение в другом потоке, и возвращаемое значение проверки зависит от его вывода.

Оператор Backtrick выполнит команду в оболочке. Чем он выведет ошибку в stderr . 2>&1 используется для stderr вывода потока в stdout поток, чтобы к нему можно было получить доступ через оператор обратного хода.

Автор: SeRRgIO Размещён: 18.07.2020 07:36

плюса

7919 Репутация автора

Поскольку в PHP7 все ошибки являются исключениями, вы можете просто обернуть хрупкую часть кода внутри блока try-catch, чтобы перехватить исключение \ Throwable и обработать его соответствующим образом.

Автор: emix Размещён: 18.07.2020 07:42

3 плюса

191 Репутация автора

Немного опоздал на вечеринку, но я тоже столкнулся с этой проблемой и не могу дождаться, когда исправление ошибки будет включено в мою Ubuntu LTS. Единственный чистый обходной путь, который я нашел, — это на самом деле использовать Imagick :: valid (), чтобы проверить изображение действительный.

Конечно, на вашем сервере / хостинге должно быть установлено расширение php imagick .

imagecreatefrompng error

i am getting error..how to solve.is imagecreatefrompng doesnt support the file from remote server.

2 Answers 2

To use a file from a remote server, use imagecreatefromstring in conjunction with file_get_contents :

Note that a URL can be used as a filename with file_get_contents only if fopen wrappers have been enabled.

If this doesn’t solve your problem, clarify your question. Give at least the error you’re receiving. :)

Removing the @ will let you see what’s wrong. Either the apppropriate option isn’t set, or the gd extension was built without PNG support, or the remote file doesn’t exist/can’t be downloaded.

Not the answer you’re looking for? Browse other questions tagged php gd or ask your own question.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.11.12.35412

Что такое код imagecreatefrompng

Сообщения: 6254
Благодарности: 1190

zibox86
Дата 11.2.2008, 09:09 (ссылка) | (нет голосов) Загрузка .
Конфигурация компьютера
Материнская плата: GIGABYTE «GA-H170M-D3H»
HDD: SSD диск 256ГБ 2.5″ Plextor «M5S» + WD Red IntelliPower 1Tb [WD10EFRX]
Ноутбук/нетбук: Acer Aspire 5745G-5464G50Miks (windows 8.1)
Я кончено понимаю, что GD библиотека, это не фотошоп, но я считаю что она не должна ухудшать качество файла. Это ведь бред!(( »

Сообщения: 124
Благодарности: 3

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() . ?

Последний раз редактировалось maasja, 04-01-2011 в 22:02 .

Илон Маск рекомендует:  Скрипт в HTML
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL