Criando e dividindo grandes imagens TIFF de várias páginas

4

Eu preciso criar e dividir imagens TIFF de várias páginas, variando de 2 a quase 100 páginas (A4, 300 dpi, 2500 × 3500 px). A tarefa é executada periodicamente por um script em um servidor Linux x64. Atualmente estou usando o Imagemagick. Os casos menores não apresentam problemas, mas os maiores fazem.

Eu preciso reduzir radicalmente a quantidade de memória usada durante a operação.

Por exemplo, isso:

convert *.jpg -compress lzw output.tif

(70 arquivos jpeg) consome cerca de 4,6 GB de RAM, mesmo que cada entrada seja inferior a 2 MB, o arquivo resultante é inferior a 250 MB.

A operação inversa:

convert input.tif output-%04d.png

tem problemas semelhantes.

Pelo que li, isso acontece porque o Imagemagick primeiro carrega e decodifica todas as imagens de entrada e somente depois disso ele começa a codificá-las no arquivo de saída.

Como posso criar e dividir imagens TIFF de várias páginas sem essa enorme quantidade de memória? Eu não preciso necessariamente usar o ImageMagick, qualquer outra ferramenta gratuita vai ficar bem.

    
por Karol S 06.08.2014 / 14:35

1 resposta

1

Eu tive o mesmo problema hoje ao tentar dividir uma imagem 1700, um arquivo tif de 1G. 16G de memória não foram suficientes, então tentei ter cache em disco, mas isso foi lento e facilmente esgotou mais de 100G no disco rígido sem realizar nada (isso provavelmente foi um bug).

Mas, aparentemente, o Imagemagick pode extrair um tif específico do arquivo original sem carregá-lo completamente, então conseguiu dividir o arquivo maior com um script simples:

END=2000
for ((i=1;i<=END;i++));do
echo $i
convert bigassfile.tif[$i] -scene 1 split/smallerfile_$i.tif
done

Não tem ideia de como criar um arquivo grande sem ficar sem memória, então talvez isso seja metade de uma resposta?

    
por 19.12.2016 / 17:08