Объединить два непрозрачных изображения, чтобы получить прозрачное

Мне нужно извлечь изображение из PDF.

Но поскольку его фон прозрачен, он сохраняется с мягкой маской для создания прозрачности.

Хотя я могу извлечь два непрозрачных изображения ниже, я понятия не имею, есть ли способ воссоздать исходное изображение на Java. Могу ли я использовать JAI?

Ниже находится «основное» изображение:

img.jpg

а вот и соответствующая мягкая маска:

mask.jpg

Я пробовал использовать ImageMagick с помощью команды:

convert mask.jpg -background Black -alpha shape copy.png

и я почти получил то, что мне нужно, но цвет переднего плана только черный, в то время как у исходного цвета также синий цвет переднего плана.


person alexyz78    schedule 17.02.2015    source источник
comment
Может быть, показать нам, как это должно выглядеть, когда это будет закончено.   -  person Mark Setchell    schedule 18.02.2015


Ответы (1)


Я думаю, вы, вероятно, хотите что-то вроде этого, но трудно сказать, поскольку вы не показываете нам ожидаемый результат:

convert -fuzz 20% main.jpg -transparent black   \
     mask.jpg -compose copy-opacity -composite  \
     result.png

введите здесь описание изображения

-fuzz позволяет почти черным пикселям в main.jpg стать прозрачными. Затем загружается изображение маски, и его непрозрачность копируется в основное изображение.

person Mark Setchell    schedule 18.02.2015
comment
Замечательный! Это именно то, что мне нужно, но есть ли эквивалент Java? - person alexyz78; 18.02.2015
comment
Извините, я не говорю на Java - я предположил, что вы тоже довольны интерфейсом командной строки, поскольку вы показали, что пытались там сделать. Возможно, вы могли бы shell exec выполнить команду ImageMagick, которую я дал, или посмотреть здесь stackoverflow.com/questions/19296075/ - person Mark Setchell; 18.02.2015