Что такое код imagecolordeallocate

imagecolorallocatealpha возвращает белое изображение

У меня проблема с imagecolorallocatealpha в PHP. При установке непрозрачности до 127 я получаю белое изображение вместо прозрачного.

Я тоже пробовал этот, но я получаю тот же результат

Есть идеи? Может ли это быть связано с конфигурацией сервера?

Заменить первую строку

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

Любые белые пиксели теперь будут прозрачными.

Чтобы изменить цвет прозрачности с белого, используйте:

Если весь код, который вы используете для файла изображения, вы не определили никаких значений для переменных $width и $height , и скрипт выдает ошибку.

Как правило, когда вы хотите отлаживать изображение, удалите заголовок Content-Type. Таким образом, вы можете просмотреть любые возможные ошибки, обратившись к скрипту в браузере.

FPublisher

Web-технологии: База знаний

Документация PHP

Последние поступления:

ТехЗадание на Землю

Размещена 14 марта 2020 года

Пpоект Genesis (из коpпоpативной пеpеписки)

Шпаргалка по работе с Vim

Размещена 05 декабря 2020 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

Ошибка: Error: Cannot find a val >Размещена 13 сентабря 2020 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

Linux Optimization

Размещена 30 июля 2012 года

Что такое код imagecolordeallocate

(PHP 3 >= 3.0.6, PHP 4, PHP 5)

imagecolordeallocate — De-allocate a color for an image

Description bool imagecolordeallocate ( resource image, int color )

The imagecolordeallocate() function de-allocates a color previously allocated with imagecolorallocate() or imagecolorallocatealpha() .

Пред. Начало След.
imagecolorclosesthwb Уровень выше imagecolorexact

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

php — imagecolorallocatealpha возвращает белое изображение

У меня проблема с imagecolorallocatealpha в PHP. При установке непрозрачности до 127 я получаю белое изображение вместо прозрачного.

Я тоже пробовал этот, но я получаю тот же результат

Есть идеи? Может ли это быть связано с конфигурацией сервера?

    4 2
  • 24 апр 2020 2020-04-24 03:55:23
  • skwi

2 ответа

Если весь код, который вы используете для файла изображения, вы не определили никаких значений для переменных $width и $height , и скрипт выдает ошибку.

Как правило, когда вы хотите отлаживать изображение, удалите заголовок Content-Type. Таким образом, вы можете просмотреть любые возможные ошибки, обратившись к скрипту в браузере.

  • 24 апр 2020 2020-04-24 03:55:24
  • Victor Stanciu

Заменить первую строку

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

Любые белые пиксели теперь будут прозрачными.

Чтобы изменить цвет прозрачности с белого, используйте:

imagecolordeallocate

imagecolordeallocate — De-allocate a color for an image

Описание

De-allocates a color previously allocated with imagecolorallocate() or imagecolorallocatealpha().

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

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

An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().

The color identifier

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Using imagecolordeallocate()

Убираем спагетти-код

Когда мы дела­ли свой Трелло-планировщик из Бут­стра­па и наше­го спис­ка задач, у нас появил­ся спагетти-код. Это зна­чит, что для про­сто­ты и ско­ро­сти реше­ния мы ско­пи­ро­ва­ли оди­на­ко­вые кус­ки кода, кото­рые дела­ют почти одно и то же. У них внут­ри оди­на­ко­вая логи­ка, но раз­ные вход­ные дан­ные, и мы их про­сто скопировали-вставили.

У тако­го под­хо­да к про­грам­ми­ро­ва­нию есть несколь­ко про­блем:

  • под­дер­жи­вать такой код слож­но, пото­му что нуж­но посто­ян­но про­ве­рять, во всех ли местах мы внес­ли нуж­ные изме­не­ния;
  • рас­ши­рять функ­ци­о­наль­ность слож­но, так как лег­ко запу­тать­ся, какую имен­но часть кода мы рас­ши­ря­ем или опти­ми­зи­ру­ем;
  • читать такой код труд­но, пото­му что один и тот же код встре­ча­ет­ся мно­го раз.

Един­ствен­ное, когда мож­но исполь­зо­вать такой под­ход — если нуж­но что-то быст­ро про­те­сти­ро­вать и понять, рабо­та­ет оно или нет. Если не рабо­та­ет — зна­чит, мы сэко­но­ми­ли вре­мя и не ста­ли тра­тить его на неудач­ное реше­ние. А если всё рабо­та­ет как нуж­но, зна­чит, наста­ло вре­мя пере­пи­сать код в нор­маль­ном виде. Для это­го нам пона­до­бит­ся неко­то­рое подо­бие объ­ек­та, но не на осно­ве клас­са, а создан­ное вруч­ную.

Мы хоте­ли ООП, но не смог­ли

Изна­чаль­но мы хоте­ли на этом при­ме­ре пока­зать силу клас­сов и объ­ек­тов в объектно-ориентированном про­грам­ми­ро­ва­нии. Но, разо­брав­шись, поня­ли, что клас­сы толь­ко всё услож­нят, не при­не­ся нам суще­ствен­ной поль­зы.

Поэто­му мы будем исполь­зо­вать объ­ек­ты, но без клас­сов. А силу клас­сов мы пока­за­ли в игре на Питоне — посмот­ри­те, вам понра­вит­ся.

Новый тип переменной: объект

У пере­мен­ной типа «объ­ект» есть одна отли­чи­тель­ная осо­бен­ность: она состо­ит как бы из двух частей — свой­ства и зна­че­ния. Мы про это гово­ри­ли в ста­тье про объ­ек­ты в ООП, и здесь всё то же самое — у объ­ек­та меня­ют­ся толь­ко зна­че­ния свойств. Пояс­ним на при­ме­ре язы­ка JavaScript.

Сде­ла­ем переменную-объект, у кото­рой будет два свой­ства — имя и воз­раст:

var person = <
name: «Миша»,
age: 35
>

Что­бы поме­нять имя, нуж­но напи­сать назва­ние пере­мен­ной и через точ­ку ука­зать назва­ние свой­ства, кото­рое хотим изме­нить:

person.name = «Илья»;
person.age = 31;

Свойств у объ­ек­та может быть сколь­ко угод­но:

var person = <
name1: «Миша»,
name2: «Саша»,
name3: «Лена»,
age1: 35,
age2: 21,
age3: 19
>

Но если у объ­ек­та полу­ча­ет­ся мно­го одно­тип­ных свойств, мож­но сде­лать их мас­си­вом и обра­щать­ся к ним по номе­рам. А если эле­мен­ты мас­си­ва тоже сде­лать объ­ек­та­ми с оди­на­ко­вы­ми назва­ни­я­ми свойств, полу­чит­ся вот такая магия:

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

Собираем дубли

Прой­дём­ся по наше­му ста­ро­му коду из про­шлой ста­тьи и собе­рём все оди­на­ко­вые пере­мен­ные, кото­рые отли­ча­ют­ся толь­ко циф­ра­ми:

Пер­вые две пере­мен­ные зада­ют ссыл­ку на объ­ект и мас­ку для срав­не­ния эле­мен­тов, а вто­рые две отве­ча­ют за коли­че­ство задач в колон­ках.

Свер­нём эти 16 пере­мен­ных в один боль­шой объ­ект:

Теперь, зная толь­ко номер колон­ки, мы можем обра­тить­ся к объ­ек­ту, мас­ке и коли­че­ству задач в колон­ке. Сна­ча­ла это может пока­зать­ся гро­мозд­ким, но на самом деле сокра­ща­ет наш финаль­ный объ­ём про­грам­мы в 4 раза.

Что­бы изба­вить­ся от дуб­лей в коде, исполь­зу­ют цик­лы или выно­сят повто­ря­ю­щий­ся код в отдель­ную функ­цию. На самом деле вари­ан­тов боль­ше, но основ­ные — эти.

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

Используем цикл

Цик­лы при­ме­ня­ют в тех слу­ча­ях, когда спагетти-код по оче­ре­ди исполь­зу­ет­ся несколь­ко раз, где отли­ча­ют­ся толь­ко поряд­ко­вые номе­ра эле­мен­тов. В нашем слу­чае это функ­ция showTasks(). Она берёт по оче­ре­ди все эле­мен­ты из локаль­но­го хра­ни­ли­ща и по оче­ре­ди же срав­ни­ва­ет их с шаб­ло­ном — для пер­вой, вто­рой, тре­тьей или чётвёр­той колон­ки. Един­ствен­ное, чем отли­ча­ют­ся фраг­мен­ты — мас­кой и колон­кой, куда их отправ­лять:

// Функция, которая берёт из памяти наши задачи и делает из них список
function showTasks() <
// Узнаём размер хранилища
var Storage_size = localStorage.length;
// Если в хранилище что-то есть…
if (Storage_size > 0) <
// то берём и добавляем это в задачи
for (var i = 0; i
var key = localStorage.key(i);

// Обрабатываем первый список
if(key.indexOf( Mask1 ) == 0) <
// и делаем это элементами списка
$(‘ ‘).addClass(‘tdItem’)
.attr(‘data-itemid’, key)
.text(localStorage.getItem(key))
.appendTo( List1 );
>

// Обрабатываем второй список
if(key.indexOf( Mask2 ) == 0) <
// и делаем это элементами списка
$(‘ ‘).addClass(‘tdItem’)
.attr(‘data-itemid’, key)
.text(localStorage.getItem(key))
.appendTo( List2 );
>

// Обрабатываем третий список
if(key.indexOf( Mask3 ) == 0) <
// и делаем это элементами списка
$(‘ ‘).addClass(‘tdItem’)
.attr(‘data-itemid’, key)
.text(localStorage.getItem(key))
.appendTo( List3 );
>

// Обрабатываем четвёртый список
if(key.indexOf( Mask4 ) == 0) <
// и делаем это элементами списка
$(‘ ‘).addClass(‘tdItem’)
.attr(‘data-itemid’, key)
.text(localStorage.getItem(key))
.appendTo( List4 );
>
>
>
>

Сде­ла­ем то же самое в цик­ле, исполь­зуя нашу боль­шую переменную-объект. Для это­го мы орга­ни­зу­ем цикл от 0 до 3 (пото­му что нуме­ра­ция эле­мен­тов мас­си­ва начи­на­ет­ся с нуля) и по оче­ре­ди про­ве­ря­ем все зна­че­ния:

Код сокра­тил­ся в 4 раза, читать ста­ло про­ще, и всё меня­ет­ся в одном месте. Кра­со­та.

Делаем отдельную функцию

У нас есть вот такой огром­ный кусок кода, кото­рый дела­ет одно и то же, толь­ко с раз­ны­ми эле­мен­та­ми.

Здесь 4 раза зада­ёт­ся обра­бот­чик нажа­тия кла­виш в поле вво­да у каж­дой колон­ки. Оче­вид­но, что про­ще выне­сти повто­ря­ю­щий­ся код в отдель­ную функ­цию и вызы­вать её по мере необ­хо­ди­мо­сти:

imagecolordeallocate

(PHP 4, PHP 5, PHP 7)

imagecolordeallocate — Разрыв ассоциации переменной с цветом для заданного изображения

Описание

Разрывает ассоциацию переменной с цветом, которая ранее была создана функциями imagecolorallocate() или imagecolorallocatealpha() .

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

Ресурс изображения, возвращаемый одной из функций создания изображений, например, такой как imagecreatetruecolor() .

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования imagecolordeallocate()

imagecolordeallocate

De-allocate a color for an image

Description

De-allocates a color previously allocated with imagecolorallocate or imagecolorallocatealpha .

Parameters

An image resource, returned by one of the image creation functions, such as imagecreatetruecolor .

The color identifier.

Return Values

Returns TRUE on success or FALSE on failure.

Examples

Example #1 Using imagecolordeallocate

imagecolorallocatealpha

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

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

Описание

imagecolorallocatealpha() работает аналогично функции imagecolorallocate() , но еще добавляет к цвету параметр alpha , отвечающий за прозрачность.

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

Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor() .

Значение красного компонента цвета.

Значение зеленого компонента цвета.

Значение синего компонента цвета.

Значение в диапазоне от до 127. означает непрозрачный цвет, 127 означает полную прозрачность.

Параметры red , green и blue могут быть либо целочисленными в диапазоне от 0 до 255 либо шестнадцатеричными в диапазоне от 0x00 до 0xFF.

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

Идентификатор цвета или FALSE в случае неудачи при создании цвета.

Эта функция может возвращать как boolean FALSE , так и не-boolean значение, которое приводится к FALSE . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.

Илон Маск рекомендует:  Сдвигаем вверх

Список изменений

Версия Описание
5.1.3 Возвращает FALSE , если создать цвет не удалось. Раньше в этом случае функция возвращала -1.

Примеры

Пример #1 Пример использования imagecolorallocatealpha()

= 300 ;
$image = imagecreatetruecolor ( $size , $size );

// создадим белый фон с черной рамкой
$back = imagecolorallocate ( $image , 255 , 255 , 255 );
$border = imagecolorallocate ( $image , 0 , 0 , 0 );
imagefilledrectangle ( $image , 0 , 0 , $size — 1 , $size — 1 , $back );
imagerectangle ( $image , 0 , 0 , $size — 1 , $size — 1 , $border );

$yellow_x = 100 ;
$yellow_y = 75 ;
$red_x = 120 ;
$red_y = 165 ;
$blue_x = 187 ;
$blue_y = 125 ;
$radius = 150 ;

// создание цветов с альфа компонентом
$yellow = imagecolorallocatealpha ( $image , 255 , 255 , 0 , 75 );
$red = imagecolorallocatealpha ( $image , 255 , 0 , 0 , 75 );
$blue = imagecolorallocatealpha ( $image , 0 , 0 , 255 , 75 );

// рисование 3х пересекающихся окружностей
imagefilledellipse ( $image , $yellow_x , $yellow_y , $radius , $radius , $yellow );
imagefilledellipse ( $image , $red_x , $red_y , $radius , $radius , $red );
imagefilledellipse ( $image , $blue_x , $blue_y , $radius , $radius , $blue );

// не забудьте вывести правильный заголовок!
header ( ‘Content-Type: image/png’ );

// и наконец, вывод
imagepng ( $image );
imagedestroy ( $image );
?>

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

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

  • imagecolorallocate() — Создание цвета для изображения
  • imagecolordeallocate() — Разрыв ассоциации переменной с цветом для заданного изображения

User Contributed Notes 6 notes

If you only wish to extract the alpha value for a color, you can simply extract it like so:

= imagecolorat ( $im , 50 , 50 );
$alpha = $color >> 24 ;

?>

It actually shifts off the first 24 bits (where 8×3 are used for each color), and returns the remaining 7 allocated bits (commonly used for alpha)

I have had a case where I got the alpha from a raw RGBA pallete. This was stored as 8bit where 0 is completely transparant, and 255 is complete opaque.
This is impossible to use with imagecolorallocatealpha() as it requires a 7bit int where 0 is completely opaque and 127 is completely transparant (otherway around)
You can solve this by subtracting 255, removing the negative sign (either by converting to string and substr($alpha, 1) or some other way) and then bitshifting the answer to the right by one 1 bit.

Example:
= 0 ; // equivalent to alpha 127 needed for imagecolorallocatealpha()
$alpha = $alpha — 255 ; // subtract 255, this will give a negative number
$alpha = substr ( $alpha , 1 ); // remove negative/minus sign
$alpha = (int) $alpha ; // convert back to integer
$alpha = $alpha >> 1 ; // bitshift to the right once.
echo $alpha ; // output: 127

// This can be done in one line of course:
$alpha = 255 ; // equivalent to 0 for imagecolorallocatealpha()
$alpha = ((int)( substr ( $alpha — 255 , 1 ))) >> 1 ;
echo $alpha ; // outputs 0
?>

«This was stored as 8bit where 0 is completely transparant, and 255 is complete opaque.»

This would be a lot more efficient:

((int) $alpha8 )) & 0xff ) >> 1 ;
?>

where alpha8==255, alpha7==0
where alpha8=127, alpha7== 64
where alpha8==0, alpha7==127

imagecolordeallocate

imagecolordeallocate — De-allocate a color for an image

Описание

De-allocates a color previously allocated with imagecolorallocate() or imagecolorallocatealpha().

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

An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().

The color identifier

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Using imagecolordeallocate()

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