Есть простой способ сделать это:
Откройте изображения в виде двух слоев, запустите «Фильтры» - «Анимация» - «Оптимизировать» («Разница»), и вы получите то же самое результирующее изображение, которое теперь состоит из нижнего слоя и слоя сравнения поверх него.
Все усложняется, только если у вас есть частичная прозрачность, потому что фильтр удаляет ее.
Вот обходной путь, который я нашел для этого случая:
- Удалить альфа-канал на обоих слоях (действие в контекстном меню)
Изображения получат белый фон, но не волнуйтесь, мы отменим это позже.
- Фильтры - Анимация - Оптимизация (Разница)
Теперь у нас есть разностный слой с белым фоном в местах частичной прозрачности, но нам нужно, чтобы эти пиксели были прозрачными, поэтому мы возьмем форму различий и скопируем изображение этой формы из исходного верхнего слоя. Убедитесь, что вновь созданный diff-слой выбран, и продолжайте:
- Layer - слой к размеру изображения
- Редактировать - Копировать (Ctrl + C)
- Вернуться к исходному изображению
- Отменить, отменить, чтобы вернуть прозрачность нашим слоям
- Редактировать - Вставить как - Новый слой
- Alpha to Selection (в контекстном меню) на вставленном diff-слое
- Удалить вставленный слой diff
- Убедитесь, что выбран верхний слой и скопируйте с него (Ctrl + C)
- Теперь у вас есть diff, просто вставьте его (Ctrl + V) и создайте из него новый слой.
Конечно, никакой магии не происходит, и частично прозрачный верхний слой не изменит цвета или не уменьшит прозрачность нижнего слоя, так что это только для случаев расширения, когда измененные пиксели верхнего слоя покрывают нижний слой.
PS Метод jsbueno не сработал для меня.