2010-11-05 7 views
9

¿Hay un límite de formato de archivo para el tamaño de píxel PNG?Límites de formato de archivo en tamaño de píxel para imágenes png?

Estoy tratando de visualizar una imagen PNG de 30.000x30.000 píxeles con Firefox, pero me sale un error. La imagen se abre correctamente en Preview.app, aunque muy lentamente. El tamaño del archivo no es grande, solo alrededor de 3 MiB (imagen de 1 bit en blanco y negro). Me pregunto si hay una razón técnica de formato de archivo para esto.

+1

Hmm, limit to PNG - related the computer. Límite a PNG en Firefox - Superusuario. – Will

+0

@Will Creo que está relacionado con la computadora. Me gustaría saber si hay un límite en el formato de archivo primero. Ahora puedo verificar por mi cuenta, pero como no hay tal pregunta y soy un buen tipo, le pregunto y le agrego un poco más de conocimiento a SO. Podría ser, digamos, que el estándar es un límite de 16K x 16K. Me aparece el error porque Firefox lo respeta y Preview.app no. –

+0

la primera definitivamente es, la segunda es una pregunta de SuperUser ... ¡No se preocupe, no voté para cerrar! – Will

Respuesta

11

Una implementación ingenua de cambio de tamaño requeriría la imagen para ser soplado hasta 2.7GB de tamaño antes de ser mostrada. Esto claramente sería demasiado grande para un programa normal de 32 bits.

La especificación PNG no parece poner ningún límite en el ancho y alto de una imagen; estos son enteros sin signo de 4 bytes, que pueden ser hasta 4294967295. http://www.libpng.org/pub/png/spec/iso/index-object.html#11IHDR

+18

En realidad, su afirmación sobre los límites de tamaño de la imagen es incorrecta. PNG técnicamente no usa enteros sin signo de 32 bits; usa enteros sin signo de 31 bits rellenos con un bit cero adicional. Esto se hizo para acomodar idiomas que no tienen tipos enteros sin signo. El límite superior en el ancho o alto de la imagen es por lo tanto 2^31-1 o 2,147,483,647. –

+0

Mis pruebas en Windows muestran que FFox usa la api DIB, que tiene un tamaño máximo de 4096 x 4096. Esto puede haber cambiado con Windows 10, pero en el momento en que va más allá de este, los navegadores comienzan a fallar. Algunos pueden funcionar en Windows pero fallan en Linux etc. etc. –

+0

@JonLennartAasenden que debería ser una respuesta, no un comentario. Es bueno que establezca una distinción entre el límite impuesto por la especificación y los límites más prácticos. –

2

Esa es una imagen extraña, pero estoy seguro de que hay una razón para tener una imagen tan grande.

No puedo realmente abordar el límite de tamaño, pero puedo abordar una forma de evitarlo. Cree un conjunto de teselas de cierto tamaño y, a medida que el usuario se desplaza, visualice las teselas mediante CSS para ubicarlas correctamente. Incluso podría salirse con la tarea de sacar todas las fichas a la vez, con un montón de imágenes más pequeñas.

Pero tengo curiosidad, ¿cuál es la aplicación que necesita una imagen tan grande que se muestra sin escalar?

Erick

+0

bien, pero ¿dice el estándar (de facto o de jure)? –

+0

Estoy representando el espacio del parámetro mandelbrot, vea mi blog. Tomó 10 días de cálculo. –

+0

@Stefano: el estándar dice que el tamaño es un entero sin signo de 32 bits, por lo que el límite teórico sería alrededor de 4 mil millones de píxeles (nueve ceros) x e y. Como menciona Mark Ransom, una implementación directa de PNG requeriría casi 3GB para renderizar su imagen de 30k por 30k pixel. Firefox probablemente cometió un error cuando no pudo asignar suficiente memoria, pero no estoy seguro ya que no sé exactamente cómo hace Firefox PNG. – slebetman

Cuestiones relacionadas