Что такое код imagecreate


Как использовать php imagecreate код на той же самой странице php?

В основном я нахожусь в процессе создания очень простого одностраничного .php шаблона, который я могу легко использовать для нескольких сайтов. Я не хочу тянуть за собой дополнительные файлы и тому подобное. Я знаком с функцией создания изображения и знаю, как ее реализовать. Однако все, что я видел до сих пор, включает в себя создание файла img.php, а затем вызов его для страницы, на которой вы хотите, чтобы изображение отображалось. В моем случае я хочу исключить страницу img.php и кое-что, как просто включить код прямо в то место, где я хочу, чтобы php создал изображение.

Мне нужно сохранить этот код в файл. Давайте назовем это: myimpage.php. Затем, чтобы php создал изображение, мне нужно разместить этот код на странице, где я хочу, чтобы изображение отображалось:

Я мог бы также добавить реальные файлы изображений, потому что это сводит на нет то, что я пытаюсь достичь. Итак, мой вопрос заключается в следующем: как я могу использовать imagecreate без необходимости создания второй php-страницы для вызова?

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

По сути, я хочу, чтобы изображение отображало содержимое $ title. Поэтому я не могу этого сделать, если код извлекается с другой страницы.

Ошибка при использовании функции imagecreate

Когда я выполнил вышеуказанный код, у меня есть ошибка, подобная этой

«Изображение невозможно отобразить, поскольку оно содержит ошибки»

Такая же ошибка отображается и на сервере

1 ответ

2 Phil [2012-07-06 09:45:00]

Я собираюсь выйти на конечность здесь и догадываться, что у вас есть какой-то контент до и/или после ваших PHP-тегов.

Убедитесь, что ваш файл начинается с перед которым нет ничего (вам может потребоваться отметка о байтовом порядке).

Кроме того, опустите закрывающий тег ?> . Вам это не нужно, и оно решит любые проблемы с пробелами.

How to use php imagecreate code on the same php page?

Basically I am in the process of creating a very simple one page .php template that I can easily use for multiple sites. I do not want to have to drag along extra files and such. I am aware of the imagecreate feature and know how to implement it. However, everything I have seen so far involves creating an img.php file and then calling for it on the page you want the image displayed. In my case, I want to eliminate the img.php page and some how just include the code directly on the spot where I want php to create the image.


I would need to save this code into a file. Let’s call it: myimpage.php. Then in order for php to create the image I would need to place this code on the page I want the image to be displayed:

I might as well throw in real image files because this negates what I am trying to achieve. So my question is this: How can I use imagecreate without the need of creating a second php page to call from?

Илон Маск рекомендует:  Что такое код max

The reason why I need to have this code on the same page is because I want to pass some variables to it.

Basically, I want the image to display the contents of $title. So I can’t do that if the code is being pulled from another page.

Функция Imagecreate

Функция Imagecreate создает новое палитровое изображение.
Функция Imagecreate возвращает идентификатор изображения, представляющего из себя пустое изображение заданного размера.

Рекомендуется использовать функцию Imagecreatetruecolor вместо Imagecreate, так как она она обрабатывает изображения с максимально возможным качеством. Если необходимо вывести палитру изображения, то Imagetruecolortopalette необходимо вызвать непосредственно перед сохранением изображения с помощью Imagepng или Imagegif.

Параметр Width являет собой ширину изображения.

Параметр Height должен содержать высоту изображения соответственно.

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

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

Imagecreate VS Imagecreatetruecolor

Для тех кто читал официальную документацию PHP php.net/imagecreate по функции imagecreate библиотеки GD на первый взгляд все ясно: раз в место нее рекомендуется использовать imagecreatetruecolor, зачить так тому и быть. Да и количество цветов обрабатываемое каждой из функций GD, явно говорит в пользу imagecreatetruecolor(). Но вот в случае работы с GIF изображениями, предпочтительнее всеже применять imagecreate().

Изображение формата GIF может содержать максимум 256 цветов, что вполне по силам Imagecreate(). А вот если сравнить кол-во памяти, требуемое каждой из функций на создание одного и того-же изображения, то весы явно склоняются не в пользу imagecreatetruecolor():

$memory = memory_get_usage ( ) ;
$width = 500 ;
$height = 500 ;

$img = imagecreate ( $width , $height ) ;
echo ‘Память, используемя для imagecreate(): ‘ . ( memory_get_usage ( ) — $memory ) . ‘ байт.
‘ ;
imagedestroy ( $img ) ;

$img = imagecreatetruecolor ( $width , $height ) ;
echo ‘Память, используемя для imagecreatetruecolor(): ‘ . ( memory_get_usage ( ) — $memory ) . ‘ байт.
‘ ;
imagedestroy ( $img ) ;


Результат теста, код которого приведен выше, впечатляет: imagecreate потребляет 536 064 байт оперативной памяти, imagecreatetruecolor — в два раза больше: 1 284 192 байт! Использование imagecreate() может весьма существенно снизить потребление памяти сервера у проэкта, активно использующего работу с изображениями.

Применение imagecreate() из библиотеки PHP GD не сводится только к экономии памяти. С помощью этой функции получается создать изображение формата gif с прозрачными участками без артефактов (три прямоугольных прозрачных участка, идущих по линии снизу слева до верхнего правго угла примера ниже). Пример изображений, с залитым желтым фоном средствами HTML, чтобы лучше была видна разница в фотографиях (черные линии по краям прозрачных областей, качество самой фотографии):

Фотографии специально увеличены (w > img > ) до размера 550 на 344 (оригинал 300 на 188). При внимательном изучении можно найти множество отличий в качестве фотографий, размер которых был изменен с помощью этого кода, написанного на PHP с использованием функций GD:

$img_path = ‘http://obovsem.org.ua/img/all/articles/24/prev_les.gif’ ;
// Если фотография не загружается, скопируйте ее на свой сервер и смените путь $img_path
$tmp = getimagesize ( $img_path ) ;
$new_width = 299 ;
$new_height = 187 ;
$original_width = $tmp [ 0 ] ;
$original_height = $tmp [ 1 ] ;

$img_src = imagecreatefromgif ( $img_path ) ;
$new_img = imagecreate ( $new_width , $new_height ) ;
//$new_img = imagecreatetruecolor($new_width, $new_height);
$color = imagecolorallocate ( $new_img , 0 , 0 , 0 ) ;
imagecolortransparent ( $new_img , $color ) ;
imagecopyresampled ( $new_img , $img_src , 0 , 0 , 0 , 0 , $new_width , $new_height , $original_width , $original_height ) ;
header ( «Content-type: image/gif» ) ;
imagegif ( $new_img ) ;
imagedestroy ( $img_src ) ;
imagedestroy ( $new_img ) ;

Вывод: при изменении размеров изображений формата gif, в особенности с прозрачными участками, и других работах над картинками этого формата, следует использовать функцию PHP библиотеки GD imagecreate.

Как использовать php imagecreate код на одной и той же php-странице?

В основном я создаю очень простой один шаблон .php на одной странице, который я могу легко использовать для нескольких сайтов. Я не хочу перетаскивать дополнительные файлы и т. Д. Я знаю о функции imagecreate и знаю, как ее реализовать. Тем не менее, все, что я видел до сих пор, связано с созданием файла img.php, а затем вызывает его на странице, которую вы хотите отобразить. В моем случае я хочу удалить страницу img.php, а некоторые — просто включить код прямо на место, где я хочу, чтобы PHP создавал изображение.

Илон Маск рекомендует:  Что такое код createcursor

Мне нужно будет сохранить этот код в файл. Назовем это: myimpage.php. Затем, чтобы PHP создавал изображение, мне нужно было бы разместить этот код на странице, я хочу, чтобы изображение отображалось:

Я мог бы также добавить в реальные файлы изображений, потому что это отрицает то, что я пытаюсь достичь. Поэтому мой вопрос заключается в следующем: как я могу использовать imagecreate без необходимости создания второй php-страницы для вызова?

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

В принципе, я хочу, чтобы изображение отображало содержимое $ title. Поэтому я не могу этого сделать, если код вытягивается с другой страницы.

Imagecreate VS Imagecreatetruecolor

Для тех кто читал официальную документацию PHP php.net/imagecreate по функции imagecreate библиотеки GD на первый взгляд все ясно: раз в место нее рекомендуется использовать imagecreatetruecolor, зачить так тому и быть. Да и количество цветов обрабатываемое каждой из функций GD, явно говорит в пользу imagecreatetruecolor(). Но вот в случае работы с GIF изображениями, предпочтительнее всеже применять imagecreate().

Изображение формата GIF может содержать максимум 256 цветов, что вполне по силам Imagecreate(). А вот если сравнить кол-во памяти, требуемое каждой из функций на создание одного и того-же изображения, то весы явно склоняются не в пользу imagecreatetruecolor():

$memory = memory_get_usage ( ) ;
$width = 500 ;
$height = 500 ;


$img = imagecreate ( $width , $height ) ;
echo ‘Память, используемя для imagecreate(): ‘ . ( memory_get_usage ( ) — $memory ) . ‘ байт.
‘ ;
imagedestroy ( $img ) ;

$img = imagecreatetruecolor ( $width , $height ) ;
echo ‘Память, используемя для imagecreatetruecolor(): ‘ . ( memory_get_usage ( ) — $memory ) . ‘ байт.
‘ ;
imagedestroy ( $img ) ;

Результат теста, код которого приведен выше, впечатляет: imagecreate потребляет 536 064 байт оперативной памяти, imagecreatetruecolor — в два раза больше: 1 284 192 байт! Использование imagecreate() может весьма существенно снизить потребление памяти сервера у проэкта, активно использующего работу с изображениями.

Применение imagecreate() из библиотеки PHP GD не сводится только к экономии памяти. С помощью этой функции получается создать изображение формата gif с прозрачными участками без артефактов (три прямоугольных прозрачных участка, идущих по линии снизу слева до верхнего правго угла примера ниже). Пример изображений, с залитым желтым фоном средствами HTML, чтобы лучше была видна разница в фотографиях (черные линии по краям прозрачных областей, качество самой фотографии):

Фотографии специально увеличены (w > img > ) до размера 550 на 344 (оригинал 300 на 188). При внимательном изучении можно найти множество отличий в качестве фотографий, размер которых был изменен с помощью этого кода, написанного на PHP с использованием функций GD:

$img_path = ‘http://obovsem.org.ua/img/all/articles/24/prev_les.gif’ ;
// Если фотография не загружается, скопируйте ее на свой сервер и смените путь $img_path
$tmp = getimagesize ( $img_path ) ;
$new_width = 299 ;
$new_height = 187 ;
$original_width = $tmp [ 0 ] ;
$original_height = $tmp [ 1 ] ;

$img_src = imagecreatefromgif ( $img_path ) ;
$new_img = imagecreate ( $new_width , $new_height ) ;
//$new_img = imagecreatetruecolor($new_width, $new_height);
$color = imagecolorallocate ( $new_img , 0 , 0 , 0 ) ;
imagecolortransparent ( $new_img , $color ) ;
imagecopyresampled ( $new_img , $img_src , 0 , 0 , 0 , 0 , $new_width , $new_height , $original_width , $original_height ) ;
header ( «Content-type: image/gif» ) ;
imagegif ( $new_img ) ;
imagedestroy ( $img_src ) ;
imagedestroy ( $new_img ) ;

Вывод: при изменении размеров изображений формата gif, в особенности с прозрачными участками, и других работах над картинками этого формата, следует использовать функцию PHP библиотеки GD imagecreate.

Илон Маск рекомендует:  Работа с wddx в рнр

php — PHP, imagecreate, imagecreatetruecolor, imagecopy, imagecopymerge

Я использую функцию PHP и путаю.

Сначала я готовлю два файла png.

QR-код с прозрачным фоном и черной точкой, я создаю его с помощью этого кода (только ключевая точка, а не все).

Я делаю png и использую цвет, чтобы заполнить его фон краской MS.

Подготовьтесь. Тогда код

Код делает 3.png следующим образом: www.capbite.com/subfolder/lion/test/3.png

Теперь, если я использую

Трудно описать образ, созданный разными способами, поэтому я вставляю ссылку на изображения, но моей репутации недостаточно, чтобы размещать больше ссылок или изображений. — Отредактировано Niet;)


Мой вопрос: просто 3.png, он имеет прозрачный фон, даже использует другую функцию create, но когда он копирует на другое изображение, которое я создал или с помощью MS paint, результатом я встречаюсь.

Что отличает imagecreate & imagecreatetruecolor от 4-1.png и 4-3.png?

Какая разница между imagecopy & imagecopymerge (даже pct set 100) составляет 4-3.png и 4-4.png?

Какая разница между изображениями, которые я создал или с помощью краски MS, составляет 4-3.png и 5-3.png?

    1 1
  • 30 июн 2020 2020-06-30 20:06:04
  • Lion

1 ответ

Я бы рекомендовал использовать imagecreate , а не imagecreatetruecolor .

При использовании imagecreate , первый цвет, который вы определяете, будет цветом фона, который заполняет весь холст. Обычно это будет ваш «прозрачный» цвет, однако, как правило, это лучше (читайте: более эффективно в файле), чтобы сделать это следующим образом:

Таким образом, вы не используете альфа-канал, вы просто говорите ему, что «все, что я рисую ярко-розовым, будет прозрачным» — вот как работает прозрачность в изображениях GIF, кстати, а также «традиционный «способ сделать это, вернувшись к старым играм многих лет назад!

Используя imagecreate -generated изображения, копирование работает намного проще, потому что GD точно знает, какой цвет является «прозрачным» и, следовательно, его нельзя копировать в цель. При использовании imagecreatetruecolor , вы попадаете в сложный и грязный бизнес композитинга.

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

Как использовать php imagecreate код на одной и той же php-странице?

В основном я создаю очень простой один шаблон.php на одной странице, который я могу легко использовать для нескольких сайтов. Я не хочу перетаскивать дополнительные файлы и т.д. Я знаю о функции imagecreate и знаю, как ее реализовать. Тем не менее, все, что я видел до сих пор, связано с созданием файла img.php, а затем вызывает его на странице, которую вы хотите отобразить. В моем случае я хочу удалить страницу img.php, а некоторые — просто включить код прямо на место, где я хочу, чтобы php создавал изображение.

Мне нужно будет сохранить этот код в файл. Позвольте называть его: myimpage.php. Затем, чтобы php создавал изображение, мне нужно было бы разместить этот код на странице, я хочу, чтобы изображение отображалось:

Я мог бы также добавить в реальные файлы изображений, потому что это отрицает то, что я пытаюсь достичь. Поэтому мой вопрос заключается в следующем: как я могу использовать imagecreate без необходимости создания второй php-страницы для вызова?

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

В принципе, я хочу, чтобы изображение отображало содержимое $ title. Поэтому я не могу этого сделать, если код вытягивается с другой страницы.

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