Entonces, para resumir, estamos desarrollando una aplicación. Tenemos un par de animaciones que tienen aproximadamente 200 png de largo. Ya no estamos trabajando con nuestro animador que los hizo en flash. Las animaciones, cuando se exportan a su estado final, ocupan alrededor de 70 kb; sin embargo, si miro los recursos de la aplicación, están más cerca de los 30 kn cada una.
Entonces, me encuentro en un pequeño aprieto. No puedo entender, por mi vida, cómo alguien sacó esos pocos KB de estos png. Cada vez que modifico cualquiera de estos png, se duplican en tamaño.
Estoy aumentando estos píxeles solo alrededor del 105%, ¿es eso suficiente para saltar tanto?
En resumen, PNG, al igual que GIF, se basa en la reducción de color para la compresión. Y al cambiar la escala, aumenta la cantidad de colores.
Un mapa de bits regular se guarda como 24 (o 32, incluida la transparencia) bits por píxel individual, lo que da canales RGB de 8 bits y un total de 256x256x256 = 16 millones de colores.
GIF dice espera. Voy a usar menos colores (256 en total) y estoy creando una lista de todos los colores que estoy usando. Por lo tanto, sus colores se pueden elegir entre esos 16 millones, pero no demasiados. Esto lo hace mucho más eficiente que un mapa de bits, con la desventaja de que no puede usar los 16 millones de colores en una sola imagen. Pero para imágenes más simples está bien.
Un GIF es al menos ~3 veces más eficiente (8 bits frente a 24 bits), pero potencialmente más. Porque si solo usa 16 colores en lugar de 256, solo necesita 4 bits por color. Y los GIF tampoco almacenan cada píxel. Un mapa de bits dirá 1, verde, 2, verde, 3, verde, 4, verde, 5, azul, 6, rojo, 7 azul, 8 azul. Mientras que un GIF dirá 1, verde, 5, azul, 6 rojo, 7, azul.
PNG es casi lo mismo que un GIF, pero dice; Sí, me gusta la idea de usar menos colores y enumerar los primeros de una serie de píxeles del mismo color... pero ¿y si necesito más de 256 píxeles? PNG usará menos bits si es posible, por lo que 4 bits si usa 16 colores, 8 bits si usa 256 colores o menos y 24 bits si realmente usa los 16 millones de colores porque es una foto de una celebración de Holi .
A lo que esto se reduce es a esto; cuantos menos colores uses y más grandes sean tus áreas planas; cuanto menor sea su tamaño de archivo es.
Al exportar la obra de arte desde flash, su artista (o un algoritmo) miró el trabajo y dijo; Está bien, actualmente estoy usando muchos colores, pero si lo reduzco a unos 32, se verá más o menos igual a simple vista.
Luego tomó la imagen y la redimensionó, lo que crea más píxeles únicos. Porque en lugar de un corte limpio entre el color A y B, el borde ahora está a medio camino entre un píxel, por lo que Photoshop crea un nuevo color que es una mezcla de A y B. Esto tiene dos efectos principales: crea más colores, por lo que escribir abajo cada color toma más bits - crea más cambios de color por fila
Ambos hacen que el archivo de imagen sea más grande.
Tome un círculo simple, por ejemplo: va de 16 a 17 píxeles y de 2 a aproximadamente 8 colores. Puedo escribir las (primeras líneas de) primer círculo como
1, white, 6, blue, 12, white, end
1, white, 4, blue, 14, white, end
1, white, 3, blue, 15, white, end
Mientras que el segundo círculo es
1, white, 6, lightblue, 7, darkblue, 8, blue, 11, darkblue, 12, lightblue,13, white, end
1, white, 4, lightblue, 5, lightishblue, 6, blue, 12, lightishblue, 13, lightblue, 14, white, end
1, white, 3, lightblue, 4, blue, 14, lightblue, 15, white, end
Que es más del doble de largo.
Otras personas mencionaron los datos del encabezado y el crecimiento exponencial (escala en un 105 % significa que obtienes una cantidad de píxeles del 110 %), pero creo que la profundidad de bits es la causa principal del aumento de tamaño en este caso. Imagine escribir una clase de niños en edad escolar solo por su nombre, o por su nombre y apellido.
Zach Saucier
Yorik
Evan H Stanfield
Jongware
pngcrush
pueden, literalmente, reducir los archivos PNG al tamaño mínimo absoluto, y normalmente lo hacen sin cambiar un poco la imagen en sí.