¿Cómo puedo abrir una imagen muy, muy grande para reducir su tamaño?

14

Tengo una imagen con una resolución de 18984x28591px pero no puedo abrirla con Paint o con Pixlr Editor para reducir su tamaño.

¿Cómo puedo convertir o abrir esta imagen grande en mi computadora portátil?

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Educ
fuente
44
El problema no es el DPI, es probablemente la dimensión del archivo. ¡Debería ser más de 1.5 GByte! ¿Es eso así?
TFuto
tamaño de la imagen es 31.3 MB (32,846,155 bytes)
Educ
2
Lo sentimos, no la dimensión del archivo. El tamaño en RAM. Si decodifica eso a una representación normal, eso necesita 18984x28591x3 bytes ~ = 1.5 GByte. Necesitará al menos esta cantidad de RAM solo para abrirla. Y probablemente otro 1 Gbyte por manipularlo. Y 1 GByte para el sistema operativo. Algo como eso.
TFuto
es mi foto personal, ¿puedo enviártela por Google Drive para reducir el tamaño si es posible y gracias de antemano
Educ
2
Sí, puedo intentarlo. :-) También puede probar el convertidor por lotes de IrfanView, podría ayudar.
TFuto

Respuestas:

29

Usé ImageMagick en Ubuntu para cambiar el tamaño de esas imágenes grandes.

convert -resize 10% source.jpg dest.jpg

Tomó un tiempo, pero funcionó con 1 GByte de RAM, la herramienta creó un archivo de intercambio de 4.7 Gbyte para sí mismo.

Más información está en AskUbuntu .

TFuto
fuente
3
También puede darle una resolución específica, por ejemploconvert -resize 1898x2859 ...
Michael Hampton
2
También disponible en OSX.
o0 '.
1
También hay una versión de Windows.
Tonny
9

Teóricamente, la mayoría de los formatos de imagen podrían reducirse progresivamente, sin cargar toda la imagen en la memoria, sin embargo, no conozco ninguna herramienta que realmente implemente dicha función, excepto JPEG: es especial porque no solo puede reducir la escala sin cargar la resolución completa, pero también a menor escala sin decodificar la resolución completa, gracias al uso creativo de DCT (JPEG está codificado en el dominio de frecuencia, lo que significa que no tiene que decodificarse exactamente a la misma resolución que la imagen original).

La herramienta de decodificación JPEG predeterminada (línea de comando, paquete libjpeg-progs en Linux, busque djpeg.exe para Windows) reducirá el tamaño de JPEG enorme antes de que una aplicación "normal" pueda terminar de cargarlo:

djpeg -scale 1/8 huge_image_that_will_not_fit_in_your_ram.jpg >downscaled.ppm

También he visto la opción de reducción de escala mientras se carga en alguna aplicación GUI, pero no puedo recordarla en este momento.

¡Punto de referencia!

Comparando el uso de memoria y el tiempo de procesamiento de ImageMagick vs djpeg reduciendo la escala de una imagen grande (canalizando a cjpeg , por lo que la imagen resultante también es jpg, para una comparación justa con convertir )

$ 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 frente a 1,4 MB y más de 10 veces más lento, y esto fue en una imagen relativamente pequeña de 13k x 11k que podía caber completamente en RAM para que no ocurriera intercambio.

Por otro lado, el uso de djpeg para la reducción de escala también tiene sus propias limitaciones: la elección del factor de escala es limitada y el método de remuestreo no se puede cambiar.

szulat
fuente
7

También puede intentar usar Picture Resizer en Windows (me encanta esta herramienta)

Simplemente arrastre y suelte la imagen en este simple EXE. Es especialmente útil si tiene muchas imágenes para convertir, ya que puede hacer muchas a la vez.

Toda la configuración se realiza a través de la denominación del EXE, que es IMO brillante

Sin embargo, nunca lo he intentado con un archivo enorme.

mateoc
fuente