Como posso abrir uma imagem muito, muito grande para reduzi-la?

14

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?

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Educ
fonte
4
O problema não é o DPI, é provavelmente a dimensão do arquivo. Deve ter mais de 1,5 GByte! É assim mesmo?
TFuto
tamanho da imagem é 31.3 MB (32.846.155 bytes)
Educ
2
Desculpe, não a dimensão do arquivo. O tamanho na RAM. Se você decodificar isso para uma representação normal, precisará de 18984x28591x3 bytes ~ = 1,5 GByte. Você precisará de pelo menos essa quantidade de RAM apenas para abri-la. E provavelmente outro 1 Gbyte por manipulá-lo. E 1 GByte para o sistema operacional. Algo parecido.
TFuto
é a minha imagem pessoal posso enviá-lo a você pelo Google Drive para reduzir o tamanho se isso possível e agradece antecipadamente
Educ
2
Sim, eu posso tentar. :-) Você também pode tentar o conversor de lotes do IrfanView, isso pode ajudar.
TFuto

Respostas:

29

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 .

TFuto
fonte
3
Você também pode dar uma resolução específica, por exemploconvert -resize 1898x2859 ...
Michael Hampton
2
Também disponível no OSX.
o0 '.
1
Há também uma versão do Windows.
Tonny
9

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.

Referência!

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.

szulat
fonte
7

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.

mateoc
fonte