У меня есть следующее изображение (обратите внимание на прозрачный фон):
У меня также есть черно-белая маска из тот же размер :
Я хотел бы «обрезать» платье и получить только часть первого изображения, содержащегося в черном круге , Я пробовал много разных методов, но они не работали или слишком медленные:
1) ImageMagick (командная строка) <== какую команду я могу использовать для достижения этой цели? Я пробовал умножение и копирование, но они не работали </p>
2) WideImage работает: $maskedImage = $source->applyMask($mask);
, но это занимает более 12 секунд.
Меня интересует решение ImageMagick, если это возможно.
РЕДАКТИРОВАТЬ
Представленные решения работают нормально, если маска меньше исходного изображения и если простое исходное изображение. С этим исходным изображением и маской результат «смазан»:
Источник:
Маска:
Команда:
convert source.png \( mask.png -negate \) -alpha off -compose copy_opacity -composite result.png
Результат (я добавил серый фон вместо прозрачного, чтобы показать неправильный белый):