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);
Код минимально необходимый, никаких проверок на наличие файла или корректность его внутреннего формата не производится, это вы можете сделать самостоятельно.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 761 | Комментариев: 0

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

Комментарии

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

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

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

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