Observação: Depois de muito tempo, foi determinado que o OP está usando uma versão não padrão de jpegtran
que suporta "cortar e soltar" (copiar uma parte de uma imagem em outra imagem ).
Então, por que o processo de substituição (também conhecido como PS) não funciona com esse recurso? Baixo de olhar para o código, não podemos dizer com absoluto, 100% de confiança, mas há uma explicação muito provável. O PS cria um arquivo especial que é efetivamente um canal somente leitura do qual os dados são acessados de maneira contínua. Ao usá-lo, você não pode, é claro, gravar no arquivo e, mais importante, não pode procurá-lo ( acesso aleatório). Tente usar o PS com qualquer ferramenta que você possa imaginar que não use um modelo de streaming (vim é um exemplo). Você ficará restrito ao que pode fazer ou simplesmente não funcionará.
Dado que para este recurso jpegtran
está extraindo um subconjunto retangular da imagem de origem (JPEG), parece altamente improvável que quem implementou o recurso impusesse uma restrição em si que restringisse o acesso ao fluxo unidirecional. Retirar uma parte de uma imagem é claramente uma operação em que a busca seria muito útil, se não obrigatória. Como tal, o PS não é permitido.