Blog. Just Blog

Негатив изображения на PHP

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
В PHP есть штатная функция ImageFilter. С параметром IMG_FILTER_NEGATE она преобразует изображение в негатив. Но, как выяснилось на практике, эта функция косячно работает с некоторыми картинками при последовательном преобразовании изображения. Пришлось быстренько набросать свой вариант скрипта, вот что у меня получилось:
  1. // Файл для обработки
  2. $im=ImageCreateFromJPEG('test.jpg');
  3.  
  4. // Размеры изображения
  5. $width=ImageSX($im);
  6. $height=ImageSY($im);
  7.  
  8. for ($x=0$x<$width$x++) {
  9.     for ($y=0$y<$height$y++) {
  10.         $rgb=ImageColorAt($im,$x,$y);
  11.  
  12.         $R=($rgb >> 16) & 0xFF;
  13.         $G=($rgb >> 8) & 0xFF;
  14.         $B=$rgb 0xFF;
  15.  
  16.         // Противоположный цвет
  17.         $Rx=255-$R;
  18.         $Gx=255-$G;
  19.         $Bx=255-$B;
  20.  
  21.         // Добавить цвет в палитру и установить новый цвет пиксела
  22.         $new_color=ImageColorAllocate($im$Rx$Gx$Bx);
  23.         ImageSetPixel($im,$x,$y,$new_color);
  24.     }
  25. }
  26.  
  27. // Прибраться за собой
  28. ImageDestroy($im);
Код минимально необходимый, никаких проверок на наличие файла или корректность его внутреннего формата не производится, это вы можете сделать самостоятельно.

Поделиться ссылкой ВКонтакте
Просмотров: 1944 | Комментариев: 0

Метки: PHP, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0039 сек.) / Память: 4.5 Mb
Наверх