В Imagemagick, предполагая, что два изображения имеют одинаковый размер, затем попробуйте
(синтаксис Unix)
convert \
opaque_image.png \
\( transparent_image.png -alpha extract \) \
-alpha off -compose copy_opacity -composite \
result.png
(синтаксис Windows)
convert ^
opaque_image.png ^
( transparent_image.png -alpha extract ) ^
-alpha off -compose copy_opacity -composite ^
result.png
Возможно, у вашего прозрачного изображения нет двоичного альфа-канала.Например, значения альфа могут быть 0 (полностью прозрачными) в областях, которые вы хотите удалить, но, скажем, только 80% в областях, которые вы хотите сохранить.В этом случае он изменит непрозрачные области, которые вы хотите сохранить.Одним из решений будет пороговое значение маски перед наложением ее на непрозрачное изображение.