2016-12-28 2 views
0

Я использую этот код, чтобы сделать все белые пикселы прозрачными:Imagecolortransparent() для нескольких цветов

$img = imagecreatefromjpeg('test.jpg'); 
$remove = imagecolorallocate($img, 255, 255, 255); 
imagecolortransparent($img, $remove); 
imagepng($img, 'bla.png'); 

Но я также хочу некоторые «почти белые» пиксели быть прозрачными, как 254, 255, 255 и т.д. Как я могу добавить, что?

+0

Попробуйте с помощью «Fuzz 1%» –

ответ

0

Если у вас есть вопрос, как удалить смежную область с аналогичным диапазоном цветов; Должен сказать, что с помощью PHP-библиотеки GD сложно. Вы должны взглянуть на ImageMagick, который является гораздо более мощной библиотекой обработки изображений и имеет PHP integration.

Если вы решите использовать ImageMagick вместо этого, у вас будет доступ ко многим сторонним скриптам, которые будут выполнять удивительные обработки изображений. Один из них - Фред Вайнхаус, MagicWand. Он делает то, что вы ищете.

Вы засеваете его координатой x и y, он может извлечь цвет этой координаты и сделать ее прозрачной с настраиваемым порогом различий цвета (фактор фаз). Посмотрите, как это может соответствовать градиент синий:

magicwand's magic

+0

Этот код удаляет только 254, 255, 255. Ну да, мне нужно, чтобы сделать белый фон одежды изображений прозрачный и удаление некоторых конкретных цветов не очень хорошее решение. Что бы вы предложили в первую очередь для этого? –

+1

Ответ подсказывает использование «пуха». Вы хотите использовать значение «fuzz», чтобы указать, насколько близко должен быть цвет к целевому «прозрачному» цвету, который должен быть затронут. Из командной строки это будет «-fuzz 1» или «-fuzz 2». Конечно, привязка PHP имеет некоторый эквивалентный способ установки значения fuzz. –

+0

@AnneSchwarz: Мое предложение, как я уже сказал, - вместо этого использовать ImageMagick. Кроме того, насколько я вижу, скрипт [MagicWand] (http://fmwconcepts.com/imagemagick/magicwand/index.php) - это именно то, что вам нужно. Вы можете использовать его напрямую или перенести некоторые его части на PHP для вашего собственного использования. – sepehr