uno de los beneficios de mi papel aquí en Google es que Iget troll a través de una gran cantidad de aplicaciones de Android, y buscar lugares comunes donde la gente podría ser capaz de mejorar su rendimiento.
últimamente, he estado notando el crecimiento de una tendencia aterradora : archivos PNG hinchados.
como hablé la última vez, PNG es un formato de archivo de imagen bastante impresionante y flexible. Tiene un gran control de calidad y es compatible con la transparencia. Como tal, se ha convertido en el punto de referencia para los desarrolladores que buscan transparencia desde hace unas décadas.,
el problema es que es bastante fácil hacer archivos PNG hinchados; diablos, solo agregar dos píxeles al ancho de su imagen podría duplicar su tamaño. Por lo tanto, es fácil asumir que la mayoría de los PNGs por ahí simplemente no han recibido el amor & atención que merecen.
así que, ahora que he troleado a través de unos 100 APK, he decidido pasar a lo largo de mis principales sugerencias sobre la reducción de tamaño de archivo PNG. Estas sugerencias se basan en cosas que he visto en aplicaciones reales que los seres humanos reales están utilizando. YMMV si su aplicación solo es utilizada por robots o ardillas pequeñas.,
una vez que entienda el formato de archivo PNG, queda claro que hay algunas áreas obvias de mejora que podrían resultar en tamaños de archivo más pequeños:
eliminar trozos innecesarios
Reducir colores únicos
optimizar la opción de filtro línea por línea
optimizar la compresión de deflación
y esta no es información nueva. La optimización PNG ha sido un problema común durante mucho tiempo; hace 20 años, Ken Silverman escribió uno de los primeros optimizadores PNG populares, PNGOUT. (Que se convirtió en la columna vertebral del famoso motor 3D Duke Nukem.,) Desde entonces, ha habido un montón de nuevos optimizadores PNG que han llegado a la escena; una búsqueda rápida en google traerá una gran cantidad de opciones para que usted elija:
el truco aquí, es que en el espectro completo de cosas que una herramienta podría hacer, cada una de estas herramientas hace un subconjunto de ella; por lo que no hay «mejor herramienta» para el trabajo, así que asegúrese de que está gastando el tiempo para evaluar cuál funciona mejor para usted, y luego adoptar el infierno fuera de ella.
FWIW, uno de mis favoritos en esa lista tiene que ser zopfliPNG., Reduce el tamaño del archivo PNG al proporcionar una etapa de desinflado más eficiente y potente en el compresor, lo que le permite encontrar mejores coincidencias en sus datos. Puede disminuir el tamaño del archivo PNG en un 5%, sin afectar la calidad de la imagen de ninguna forma sure seguro que es significativamente más lento, pero es impresionante que aún se puedan hacer mejoras en el códec DEFLATE de la vieja escuela.
la esencia aquí, es que si usted tiene una gran cantidad de datos que vienen a través de su aplicación, usted debe tener una herramienta de optimización PNG en su canal de carga / distribución, aunque solo sea para mantener la locura a raya.,
reducir colores
ahora, si las herramientas anteriores simplemente no están funcionando para usted, o le gustaría adoptar un enfoque más manual para mejorar algunos de sus activos _before_ se lanza a una de las herramientas anteriores, entonces vale la pena tomar el asunto en sus propias manos.
aunque hay muchas cosas que puedes hacer manualmente, te sugiero que solo te centres en reducir el número de colores únicos en tu imagen y luego dejes que una herramienta lo lleve el resto del camino.,
la razón de su enfoque aquí, es que la reducción de colores únicos influye directamente en el potencial de compresión en cualquier otra etapa de la tubería; y las herramientas pueden hacer el resto.
vea, la etapa de filtrado del paso de compresión PNG está impulsada por la forma en que los colores de píxeles adyacentes variantes están entre sí. Como tal, reducir el número de colores únicos en el reducirá la variación en píxeles adyacentes, disminuyendo el rango dinámico de valores que se escupen de filtrado.
como resultado, la etapa de desinflar encontrará más valores duplicados y podrá comprimir mejor.,
sin embargo, vale la pena señalar que al reducir el número de colores únicos, estamos aplicando efectivamente una etapa de codificación con pérdida a nuestra imagen. Esta es la razón por la que debe manejar este proceso manualmente. Las herramientas tienen dificultades para comprender la calidad perceptiva humana, y en algunos casos, los pequeños errores de una herramienta pueden parecer errores enormes para un ojo humano. Pero, si se hace de la manera correcta, no debería ser notable para el Usuario, y puede ahorrar una gran cantidad de espacio.
PSA: elija el formato de píxel correcto
esto debería ser obvio.., Pero he visto ejemplos en algunos apk que demuestran lo contrario:
debe asegurarse de usar el formato de píxel correcto para su archivo PNG.
por ejemplo, si no tiene alfa en la imagen, entonces usar la opción RGBA 32bpp es un desperdicio de ¼ completo de su imagen; en su lugar, use el formato truecolor de 24bpp (o simplemente use JPG).Del mismo modo, si su imagen solo contiene datos en escala de grises, solo debería almacenarla como 8bpp.
básicamente, asegúrese de que no está hinchando involuntariamente su archivo PNG utilizando el tipo incorrecto de formato de píxel.
imágenes indexadas, FTW!,
Continuando, la reducción de color siempre debe comenzar con intentar optimizar sus colores para que pueda definirse utilizando el formato indexado. Modo de color indexado, básicamente elige los mejores 256 colores para usar, y reemplaza todos sus píxeles con un índice en esa paleta de colores. El resultado, es una reducción de 16 millones de colores (24bpp) a 256, que es un ahorro significativo., archivo PNG indexado
El Ejemplo de Google Doodle anterior se exportó en la función «Guardar para web» de Photoshop, y el formato de imagen se estableció en PNG8, lo que creó esta paleta de colores para la imagen: