Como obter o pngcrush para sobrescrever arquivos originais?

14

Eu li man pngcrush e parece que não há como esmagar um arquivo PNG e salvá-lo sobre o original. Eu quero comprimir várias pastas no valor de PNGs, então seria útil fazer tudo com um comando!

Atualmente, estou fazendo pngcrush -q -d tmp *.png , em seguida, recortando e colando manualmente os arquivos do diretório tmp na pasta original. Então eu acho que usar mv pode ser o melhor caminho a percorrer? Alguma idéia melhor?

    
por DisgruntledGoat 16.02.2011 / 03:15

2 respostas

16

Tudo em uma linha:

for file in *.png; do pngcrush "$file" "${file%.png}-crushed.png" && mv ${file%.png}-crushed.png" "$file"; done

deve fazer isso.

(Embora até agora em meus próprios testes, menos da metade dos pngs que eu testei em pngcrush foram menores depois, então não me impressione.)

    
por frabjous 16.02.2011 / 04:27
19

Desde a versão 1.7.22, pngcrush tem uma opção de substituição.

Tente

pngcrush -ow file.png

Veja Changelog para mais informações:

Version 1.7.22  (built with libpng-1.5.6 and zlib-1.2.5)
  Added "-ow" (overwrite) option.  The input file is overwritten and the
    output file is just used temporarily and removed after it is copied
    over the input file..  If you do not specify an output file, "pngout.png"
    is used as the temporary file. Caution: the temporary file must be on
    the same filesystem as the input file.  Contributed by a group of students
    of the University of Paris who were taking the "Understanding of Programs"
    course and wished to gain familiarity with an open-source program.
    
por Jan 13.07.2014 / 19:42