Селективен цветови ефект в PHP, Webmaster и други, блог

  1. // Файл за обработка
  2. $im = ImageCreateFromJPEG ('test.jpg');
  3. // Размеры изображения
  4. $width = ImageSX ($im);
  5. $height = ImageSY ($im);
  6. за ($x = 0; $x $ширина; $x ++)
  7. за ($y = 0; $y $height; $y ++)
  8. $rgb = ImageColorAt ($im, $x, $y);
  9. $R =( $rgb >> 16 ) & 0xFF ;
  10. $G =( $rgb >> 8 ) & 0xFF ;
  11. $B = $rgb & 0xFF ;
  12. // Цветовой тон
  13. $maxRGB = макс (масив($R, $G, $B));
  14. $minRGB = min (масив($R, $G, $B));
  15. $delta = $maxRGB - $minRGB;
  16. ако ($делта!= 0)
  17. ако ($maxRGB == $R)
  18. $h =(($G - $B)/ $delta);
  19. >
  20. elseif ($maxRGB == $G)
  21. $h = 2 +($B - $R)/$делта;
  22. >
  23. elseif ($maxRGB == $B)
  24. $h = 4 +($R - $G)/$делта;
  25. >
  26. $hue = кръгъл ($h * 60);
  27. ако ($hue 0)
  28. >
  29. друго
  30. $hue = 0;
  31. >
  32. // Оставете само червен цветной тон
  33. ако (!( $hue > 320 $hue 20 ))
  34. // Преобразуване на цвят в оттенки серого
  35. $сиво = 0,2126 * $R + 0,7152 * $G + 0,0722 * $B;
  36. $new_color = ImageColorAllocate ($im, $gray, $gray, $gray);
  37. ImageSetPixel ($im, $x, $y, $new_color);
  38. >
  39. >
  40. >
  41. // Прибраться за себе си
  42. ImageDestroy ($im);

Как се изчислява диапазонът на цветния тон, аз подробно разказах в статията за определянето на основния цвят, но тук, по-скоро всичко, граничните значения трябва да се коригират и подбират опитен път. А вот на преобразуването в оттенки серого стои остановиться. За това, за да преобразувате цвят от RGB в оттенъци серого, използваната формула:

Сиво = 0,2126*R + 0,7152*G + 0,0722*B Съответно, когато пикселът на изображението е десатуриран, всеки RGB компонент на оригиналния цвят получава същите стойности, равни на стойностите на сивата скала.

Същият код може да се използва просто за преобразуване на изображение в нива на сивото. За да направите това, премахнете изчислението на цветовия тон и проверете неговите гранични стойности.

А ето и софтуерната реализация на алгоритъма от статията. С тази помощна програма можете да премахнете нежелани цветове от изображение. Авторът еwetal, за което много му благодаря.

Премахване на цвят 0.1