Existe um método simples para fazer isso:
Abra as imagens como duas camadas, execute Filtros - Animação - Otimizar (Diferença), você deve obter a mesma imagem resultante que agora é feita da camada inferior e uma camada diferencial em cima dela.
As coisas ficam complicadas apenas se você tiver transparência parcial, porque o filtro a remove.
Aqui está uma solução alternativa que encontrei para este caso:
- Remover canal alfa nas duas camadas (a ação está no menu de contexto)
As imagens receberão fundo branco, mas não se preocupe, vamos desfazê-lo mais tarde.
- Filtros - Animação - Otimizar (Diferença)
Agora, temos a camada de diferença com fundo branco em locais de transparência parcial, mas precisamos que esses pixels sejam transparentes; portanto, assumiremos a forma do diff e copiaremos a imagem dessa forma da camada superior original. Verifique se a camada diferencial recém-gerada está selecionada e continue:
- Camada - Camada para tamanho da imagem
- Editar - Copiar (Ctrl + C)
- Retornar à imagem original
- Desfazer, Desfazer para retornar a transparência às nossas camadas
- Editar - Colar como - Nova camada
- Alfa para Seleção (no menu de contexto) na camada de diferenças colada
- Excluir a camada diff colada
- Verifique se a camada superior está selecionada e copie (Ctrl + C) dela
- Agora você tem o diff, basta colar (Ctrl + V) e criar uma nova camada a partir dele.
Obviamente, nenhuma mágica acontece, e a camada superior parcialmente transparente não altera as cores nem reduz a transparência da camada inferior; portanto, é apenas para casos de extensão, onde os pixels alterados da camada superior cobrem a camada inferior.
O método do PS jsbueno não funcionou para mim.