Tenho uma imagem com uma resolução de 18984x28591px, mas não consigo abri-la com o Paint ou com o Pixlr Editor para reduzir seu tamanho.
Como posso converter ou abrir esta imagem grande no meu laptop?
Tenho uma imagem com uma resolução de 18984x28591px, mas não consigo abri-la com o Paint ou com o Pixlr Editor para reduzir seu tamanho.
Como posso converter ou abrir esta imagem grande no meu laptop?
Respostas:
Eu usei o ImageMagick no Ubuntu para redimensionar essas fotos grandes.
convert -resize 10% source.jpg dest.jpg
Demorou um pouco, mas, com 1 GByte de RAM, a ferramenta criou um arquivo de 4,7 Gbyte para si próprio.
Mais informações estão no AskUbuntu .
convert -resize 1898x2859 ...
Teoricamente, a maioria dos formatos de imagem pode ser reduzida progressivamente, sem carregar a imagem inteira na memória. No entanto, não conheço nenhuma ferramenta que realmente implemente esse recurso, exceto o JPEG: é especial porque você não pode apenas reduzir a escala sem carregar a resolução total, mas também em escala reduzida sem decodificar a resolução total, graças ao uso criativo do DCT (o JPEG é codificado no domínio da frequência, o que significa que ele não precisa ser decodificado com a mesma resolução exata da imagem original).
A ferramenta de decodificação JPEG padrão (linha de comando, pacote libjpeg-progs no Linux, procure djpeg.exe para Windows) reduzirá o tamanho do JPEG enorme antes que um aplicativo "regular" possa terminar de carregá-lo:
djpeg -scale 1/8 huge_image_that_will_not_fit_in_your_ram.jpg >downscaled.ppm
Também vi a opção de redução de escala durante o carregamento em alguns aplicativos da GUI também, mas não consigo lembrá-la no momento.
Comparando o uso de memória e o tempo de processamento do ImageMagick x djpeg, diminuindo o tamanho de uma imagem grande (canalizando para cjpeg , para que a imagem resultante também seja jpg, para uma comparação justa com o convert )
$ display -verbose input.jpg
input.jpg JPEG 13114x11722 13114x11722+0+0 8-bit sRGB 30.75MB 6.690u 0:06.699
$ /usr/bin/time -f "time=%E mem=%MK" bash -c "convert input.jpg -scale '12.5%' output.jpg"
time=0:10.72 mem=1225844K
$ /usr/bin/time -f "time=%E mem=%MK" bash -c "djpeg -scale 1/8 input.jpg | cjpeg > output2.jpg"
time=0:00.88 mem=1412K
1,2 GB vs 1,4 MB e mais de 10 vezes mais lento - e essa era uma imagem 13k x 11k relativamente pequena que cabia inteiramente na RAM, portanto não havia troca.
Por outro lado, o uso de djpeg para redução de escala também tem suas próprias limitações: a escolha do fator de escala é limitada e o método de reamostragem não pode ser alterado.
Você também pode tentar usar o Picture Resizer no Windows (eu amo essa ferramenta)
Você simplesmente arrasta e solta a imagem neste EXE simples. É especialmente útil se você tiver muitas imagens para converter, pois pode fazer muitas de cada vez.
Toda a configuração é feita através da nomeação do EXE, que é brilhante IMO
Eu nunca tentei com arquivos enormes embora.