imagecreatetruecolor — Создание нового полноцветного изображения


Создание прозрачного фона в GD

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

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

если черный цвет сменить на белый, белый тоже стирается и остаются непонятные разводы. что я могу делать не так, либо в чем моя ошибка? если кто знает другой способ, прошу подсказать. GD конфиг:

GD Support enabled
GD Version 2.0
PNG Support enabled
libPNG Version 1.2.46
10.12.2012, 18:00

Создание прозрачного фона в тексте в Unity3D
Здравствуйте, возможно ли создать в Unity3d текст фон которого будет прозрачным, т.е внутри букв.

Вместо прозрачного фона вставляется черный цвет
Добрый день. Вот такая проблема вместо прозрачного фона вставляется черный цвет. Скрин прикрепил.

Пропадание прозрачного фона при плавном перемещении объекта
на форме с фоновой картинкой есть pictureBox, который на клик плавно по событию таймера.

Реализация прозрачного фона для нескольких слоёв изображений
Есть некое фото (как задний фон — на рисунке это дома), так же на этот фон я накладываю желтый.

Создание прозрачного призрака-силуэта
Всем доброго времени суток! У меня есть довольно сложный объект, состоящий из N-го количества.

Imagecreatetruecolor — Создание нового полноцветного изображения

да я думал об этом, но как это сделать пока не представляю. Побывал imagecopy() ,чет не вышло =(

Побывал так же наложить фон до вывода искажения, он тупо накрывает все.


//Количество символов
define ( ‘CHARS’ , 5 );

//Функция генерации произвольной строки
function generationStr ()
<
$num = CHARS ;
$range = ’35’ ; //$range — диапазон алфавита начиная с нуля
$chars = ‘1234567890aeiouybcdfghjklmnpqrstvwxz’ ;

//Открываем сессию
session_start ();

//Генерируем капчу
$captcha = generationStr ();

//Записываем капчу в сессию
unset( $_SESSION [ ‘captcha’ ]);
$_SESSION [ ‘captcha’ ] = $captcha ;

//Говорим, что этот файл картинка
header ( ‘Content-type: image/jpg’ );

//Открываем изображение
$img = imagecreatefromjpeg ( ‘images\noise1.jpg’ );

//Включаем сглаживание
imageantialias ( $img , true );

//Генерируем путь до шрифта
$font = ‘fonts\verdana.ttf’ ;

//Добавляем текст
$x = 10 ;
$y = 30 ;
for( $i = 0 ; $i CHARS ; $i ++)
<
//Генерируем цвет
$color = imagecolorallocate ( $img , rand ( 50 , 200 ), rand ( 50 , 200 ), rand ( 50 , 200 ));

$angle = rand ( 0 , 20 );
$size = rand ( 12 , 20 );
imagettftext ( $img , 20 , $angle , $x , $y , $color , $font , $_SESSION [ ‘captcha’ ][ $i ]);
$x += 20 ;
>

//Отдаём изображение
imagejpeg ( $img , «» , 90 );

20.01.2012, 18:51 #7

//Количество символов
define ( ‘CHARS’ , 5 );


//Функция генерации произвольной строки
function generationStr ()
<
$num = CHARS ;
$range = ’35’ ; //$range — диапазон алфавита начиная с нуля
$chars = ‘1234567890aeiouybcdfghjklmnpqrstvwxz’ ;

//Открываем сессию
session_start ();

//Генерируем капчу
$captcha = generationStr ();

//Записываем капчу в сессию
unset( $_SESSION [ ‘captcha’ ]);
$_SESSION [ ‘captcha’ ] = $captcha ;

//Говорим, что этот файл картинка
header ( ‘Content-type: image/jpg’ );

//Открываем изображение
$img = imagecreatefromjpeg ( ‘images\noise1.jpg’ );

//Включаем сглаживание
imageantialias ( $img , true );

//Генерируем путь до шрифта
$font = ‘fonts\verdana.ttf’ ;

//Добавляем текст
$x = 10 ;
$y = 30 ;
for( $i = 0 ; $i CHARS ; $i ++)
<
//Генерируем цвет
$color = imagecolorallocate ( $img , rand ( 50 , 200 ), rand ( 50 , 200 ), rand ( 50 , 200 ));

$angle = rand ( 0 , 20 );
$size = rand ( 12 , 20 );
imagettftext ( $img , 20 , $angle , $x , $y , $color , $font , $_SESSION [ ‘captcha’ ][ $i ]);
$x += 20 ;
>

//Отдаём изображение
imagejpeg ( $img , «» , 90 );

так и я могу, но эту капчу можно взломать. Идеальная капча обаладет след. функциями:

1. Слепленные символы
2. Волновое искажение по x и y координатам.
3. Рандомные линии перекрывающие символы (не обязательно) — усложнит чтение символов для человека.

Imagecreatetruecolor — Создание нового полноцветного изображения


скажите есть ли функция imagecreatetruecolor для делфи. Функция imagecreatetruecolor — Создает пустое полноцветное изображение. Синтаксис
resource imagecreatetruecolor (int x_size, int y_size)
и вот еще одна magecopyresampled

вот код который нужно подстроить под делфи, кто знает синтаксис С помогите решить задачу. Главное 2 функции достать

хорошо получилось следуещее, поправьте код если не так

В конструкторе на каждое изображение вызывается метод _getPixelsDiff(), и его результат кладется в массив Images. Этот метод производит такие манипуляции:
Уменьшает изображение до размеров 8×8.
Создает массив для цветов.
Проходится по каждому пикселю изображения:
Берет его цвет в RGB.
Каждый канал делит на 28.3 и округляет, чтобы максимальное значение канала было равно 9-ти.
Вычитает из каждого канала значение предыдущего пикселя.
Результат кладется в массив и возвращается.

Ну, далее в Compare() вызывается метод _getDiff(), который находит разницу между массивами.

Imagecreatetruecolor — Создание нового полноцветного изображения

Изображение создается с помощью функций imagecreate и imagecreatetruecolor.

Функция imagecreate создает изображение использующее палитру.

Каждой точке такого изображения присваивается номер цвета — от 0 до 255. Каждый цвет описывается в палитре. Таким образом изображение не может содержать более 256 цветов. В палитре каждый цвет описывается с помощью трех байт — один для красной компоненты (R), один для зеленой (G) и один для синей (B).

При использовании таких изображений целесообразно, в результате работы, генерировать GIF или PNG изображения.

Функция imagecreatetruecolor создает полноцветное изображение.

Каждая точка полноцветного изображения самостоятельно определяет свой цвет. Для хранения каждой точки используется как минимум три байта — один для красной компоненты (R), один для зеленой (G) и один для синей (B). Иногда добавляется четвертый байт. Он может быть добавлен как просто для повышения производительности, так и для определения прозрачности точки.

Такое изображение занимает больше места в памяти и в результате целесообразно генерировать JPEG или PNG изображение.

Обоим функциям передается два параметра — ширина и высота изображения. Обе функции возвращают идентификатор изображения:


Пример 1.Создание полноцветного изображения размером 320×240:
Код:

Для получения результата необходимо сделать еще два действия — определить, как минимум, один цвет (в изображениях использующих палитру, первый цвет станет цветом фона) и запаковать и отправить изображение.
Выделение цветов

Для выделения цвета используется функцияimagecolorallocate. В качестве параметров ей передается идентификатор изображения и три компоненты цвета (R,G и B). Значение каждой компоненты может изменятся от 0 до 255.

Пример 2.Выделение цветов
Код:

Если вы привыкли задавать цвет так, как это делается в HTML, то можете использовать следующую функцию:
Код:

После того, как изображение сформировано, необходимо передать его в понятном для браузера формате — GIF, JPEG или PNG. Для этого используются функцииimagegif,imagejpegиimagepng

Пример 3.Передача изображения в стандартный вывод в формате PNG
Код:

Если вы хотите сохранить изображение в файл, то должны передать его имя в качестве параметра функции, например:

Пример 4.Сохранение изображения в файл в формате JPEG
Код:
imagejpeg($img,»newimage.jpg»);
Примеры

Пример 5.Создания изображения, использующего палитру.
Код:

Hint:Помните! Cкрипт генерирующий изображение не может выводить никаких текстовых сообщений. Не оставляйте пустых строк перед « »

Пример 6.Создания изображения, использующего палитру.
Код:

Тема: Работа с изображениями

Опции темы


Отображение
  • Линейный вид
  • Комбинированный вид
  • Древовидный вид

Изображение создается с помощью функций imagecreate и imagecreatetruecolor.

Функция imagecreate создает изображение использующее палитру.
Каждой точке такого изображения присваивается номер цвета — от 0 до 255. Каждый цвет описывается в палитре. Таким образом изображение не может содержать более 256 цветов. В палитре каждый цвет описывается с помощью трех байт — один для красной компоненты В®, один для зеленой (G) и один для синей (B).
При использовании таких изображений целесообразно, в результате работы, генерировать GIF или PNG изображения.

Функция imagecreatetruecolor создает полноцветное изображение.
Каждая точка полноцветного изображения самостоятельно определяет свой цвет. Для хранения каждой точки используется как минимум три байта — один для красной компоненты В®, один для зеленой (G) и один для синей (B). Иногда добавляется четвертый байт. Он может быть добавлен как просто для повышения производительности, так и для определения прозрачности точки.
Такое изображение занимает больше места в памяти и в результате целесообразно генерировать JPEG или PNG изображение.
Обоим функциям передается два параметра — ширина и высота изображения. Обе функции возвращают идентификатор изображения:

Создание полноцветного изображения размером 320×240

Для получения результата необходимо сделать еще два действия — определить, как минимум, один цвет (в изображениях использующих палитру, первый цвет станет цветом фона) и запаковать и отправить изображение.

Красим
Для выделения цвета используется функция imagecolorallocate. В качестве параметров ей передается идентификатор изображения и три компоненты цвета (R,G и B). Значение каждой компоненты может изменятся от 0 до 255.


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.

Основы работы с библиотекой GD

Дата публикации: 2013-11-18


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

Введение

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

Поэтому, так как, библиотека является расширением, значит необходимо убедиться, что она подключена в Вашем интерпретаторе языка PHP. Для этого необходимо открыть главный конфигурационный файл PHP – php.ini. Если Вы используете Denver, значит Вам необходимо, перейти в виртуальный диск, созданный им (в моем случае это диск Z). И затем по адресу: Z:\usr\local\ php5. В корне папки php5 Вы найдете необходимый файл. Далее открываем данный файл в текстовом редакторе, находим строчку: extension=php_gd2.dll

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Если напротив данной строки, нет символа “;” (точка с запятой), значит расширение подключено, если же символ есть – его необходимо удалить и перезапустить Denver. В этом случае Вы подключите библиотеку. Теперь можно приступать к работе с данной библиотекой.

imagecreatetruecolor

(PHP 4 >= 4.0.6, PHP 5)

imagecreatetruecolor — Create a new true color image

Описание

imagecreatetruecolor() returns an image identifier representing a black image of the specified size.

Depending on your PHP and GD versions this function is defined or not. With PHP 4.0.6 through 4.1.x this function always exists if the GD module is loaded, but calling it without GD2 being installed PHP will issue a fatal error and exit. With PHP 4.2.x this behaviour is different in issuing a warning instead of an error. Other versions only define this function, if the correct GD version is installed.

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


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

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

Примеры

Пример #1 Creating a new GD image stream and outputting an image.

Результатом выполнения данного примера будет что-то подобное:

Примечания

Замечание: Эта функция нуждается в GD версии 2.0.1 или выше.

Смотрите также

  • imagedestroy() — Destroy an image
  • imagecreate() — Create a new palette based image

Для чего используется imagecreatetruecolor?

В соответствии с

он создает новое истинное цветное изображение

но только дальше — состояния:


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

Это в некоторых кодовых таблицах котлов, которые я использую для загрузки изображений (для создания JPEG) следующим образом:

В общем, мне нужно так много промежуточных изображений, чтобы создать конечный файл?

Является ли imagecreatetruecolor просто созданием немого черного изображения для использования в качестве держателя места, которое может использовать imagecopyresampled?

В ответ ответ здесь: как создается image_z:

«Очень много»? Там только один. Поскольку размер холста не может быть изменен, вы должны создать новый холст (ресурс изображения), чтобы изменить размер изображения.

Теперь, что касается того, что делает imagecreatetruecolor , а не просто imagecreate , вам нужно понять, что существуют два основных типа цветового представления:

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

True Color, где каждый пиксель изображения буквально определяет его цвет в полном объеме.

Это означает, что сразу после изображений с индексированным цветом биты в четыре раза меньше истинных цветных изображений (с использованием 1 байта для индекса цвета, а не 4 байта для всего цвета), однако он ограничен 256 различными цветами и обычно один из они зарезервированы для прозрачности.

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

GIF, с другой стороны, поддерживает только индексированные цвета. PNG поддерживает как (и многие другие неясные форматы).

Функция Imagecreatetruecolor

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

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

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

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

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

Илон Маск рекомендует:  Аргументы функции main()
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
20.01.2012, 20:28 #8