Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cuando ocupa menos un png?

Iniciado por Josepho, 12 de Julio de 2006, 04:19:21 AM

« anterior - próximo »

Josepho

Igual la pregunta os suena absurda, pero que es que noes esta pasadno algo muy extraño con los pngs, tenemos 3 pngs que son 3 strips, osea imagenes con los distintos frames de una misma animacion, total que la animacion tiene 13 frames de acuerdo?

Hicimos un primer strip de 4x4 dejando 3 huecos libres, resolucion de 2400x336 que ocupa 471 kb,  como habia mucho hueco libre pense en que podriamos buscar una forma de hacerlo para que no hubiesen huecos libres y asi en teoria, reducir el tamño de la imagen, y aqui viene el problema, uno de 1x13 de resolucion 600x1092 pesa 534 kb!

Hicimos otra prueba para ver si algo intermedio podiamos ahorrarnos mas kb, y hicimos uno de 5x3 dejando asi solo 2 huecos libres y usando menos resolucion que en el primero 1800x420 pero mas que en el segundo y el resultado fue 477kb

Alguien me puede explicar cuando exactamente pesa mas o pesa menos un png para buscar la mejor forma de almacenar las animaciones de mi juego?
Questtracers.com La web de los creadores de Kukoo Kitchen y Easter Avenger!
http://www.questtracers.com

Sepho-blog >Mi blog personal !
http://sepho.blogspot.com

donald

- los pngs...bueno, también depende con que software los grabes. Y en muchos softwares, tienes un setting para decirle el nivel de compresión que quieres. (por ejemplo, en irfan(irfanview.com)  , ponle 9, la máxima)

-multiplica alto por ancho y el resultado en pixeles, pues es un indicativo de la memoria que vas a ocupar, en principio (según el código, hay veces que da igual a nivel interno, sólo importa a veces esa multiplicación) , pero hay muchos más factores. PNG usa una especie de compresión lossless, o sea , sin perdidas de calidad, muy parecida a la del zip. Pero..se aplica tb a la imagen, puntos todos de un mismo color, da muchísima más alta compresión. Mientras que imagenes detalladísimas dan una compresión muy mala.

-cuida que no estés realizando en alguna de las grabaciones una compresión con pérdidas.O sea, reducción de colores, con cualquier fltro en el mismo diálogo de grabación del png. puede pasar.

-los programas, además de que no todos graban con la misma compresión, los hay mejores y peores, puedes tenerlos además configurados en el salvado a png de distinto modo.Haz la prueba siempre con el mismo programa(irfanview es jodidillo pa la transparencia...)

-no hay magia, pero no me hago una idea exacta de cuales son las imágenes que comparas, si no, te diría seguro lo que pasa.

-existen una serie de programas que comprimen muchísimo más el png de lo que estás comprimiendo tú con los programas standard. S lo puedes pasar al final, aunque algunas cosas, como quitarles chunks innecesarios de la cabecera, no se notan realmente si no estás haciendo cosas para móviles, donde cada byte cuenta...
Por ejemplo, pngcrush(recomendado), tweakpng (este sirve para quitar o escribir comentarios), pngGauntlet, superpng, etc...

http://pmt.sourceforge.net/pngcrush/index.html          http://sourceforge.net/project/showfiles.php?group_id=1689
http://optipng.sourceforge.net/
http://brh.numbera.com/software/pnggauntlet/
http://www.fnordware.com/superpng/
http://entropymine.com/jason/tweakpng/

Te recomiendo pngcrush(aunque sea de msdos(consola en xp)) y tweak png.

en 256 colores ocupan muchísimo menos, pero es meterte en muchas limitaciones, en juegos para pc, no te lo recomiendo. si reduces con dispersion o cualquier otra trama, será más memoria al grabar, claro. A menudo es inevitable. Si fueran de muy baja resolución(64 o 32) los tiles, si te recomendaría 256 colores o menos, sin dispersion.

-espero que la comparación no la hagas cambiando el tamaño en pixeles de cada tile cada vez! No es en absoluto lo mismo si cada tile mide 64x64, que 128x128, el resultado de la multiplicación es lo que cuenta, en principio, aunque ya te he dicho que luego hay que considerar todos los demás factores, y sobre todo, la complejidad de la imagen.
Un png a dos colores, blanco y negro, guardado como 4 bits, puede tener miles y miles de pixels (hice la prueba hace años de slavar un texto larguísimo así) puede ocupar una cantidad muy ridícula de memoria.
Si desarrollas para juegos pc, de todos modos, no te interesa perder calidad ahí.
Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S

tamat

y un apunte, si el PNG tiene alpha el algoritmo de compresión la utiliza para desechar zonas, eso quiere decir que si la zona nula de tu png la pintas con alpha cero entonces no ocupará casi nada ya que recorta la imagen (esto a veces es una putada porque si quieres conservar la información RGB en las zonas con alpha 0 no puedes.
Por un stratos menos tenso

[Vil]

interesante eso tamat, no tenia ni idea de que tambien hacia eso

Josepho

Pues mi caso es el siguiente, estoy produciendo/codeando un juego shareware y necesito pngs a tope de calidad y usando alpha, que programas de los que me has mencionados antes seria el mas recomendable para mi caso?
Questtracers.com La web de los creadores de Kukoo Kitchen y Easter Avenger!
http://www.questtracers.com

Sepho-blog >Mi blog personal !
http://sepho.blogspot.com

donald

Los compresores casi todos mantienen el alpha. El irfan...sí, las últimas versiones, pero da problemas a menudo, si tienes alpha no lo recomiendo.

Pero para trabajar en sí: Adobe Photoshop, Paint Shop Pro, y Gimp.
Los compresores son para el último toque.
Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S

Josepho

Mmm, me parece que no me he explicado con claridad, me referia a que programa para comprimir el png me recomendarias en mi caso...
Questtracers.com La web de los creadores de Kukoo Kitchen y Easter Avenger!
http://www.questtracers.com

Sepho-blog >Mi blog personal !
http://sepho.blogspot.com

fiero

No me he metido todavia muy a fondo con el formato, pero una vez que le eché un vistazo por encima ví que el PNG utiliza mucho el concepto "scanlines" a la hora de comprimir. Es decir, comprime cada línea horizontal como unidad mínima de información. ¿Podrías hacer la prueba con tu animación a 13x1 a ver lo que sale? Quizás menos scanlines signifiquen menos tamaño en algunos casos.

un saludo
www.videopanoramas.com Videopanoramas 3D player

chechocossa

Gracias donald por la info y los links!

A modo de comentario:

Hice una prueba con un png que tengo para móviles. Es una imagen de 240 x 224 y una resolución de 72 px.
En la imagen hay varios frames de distintos sprites.
Uso una paleta de hasta 64 colores y tiene transparencia.
Está diseñada en Photoshop CS y guardada para web como PNG-8 y Perceptual.
La pasé por el pngcrush (no lo conocía) para ver qué mejoraba. Utilicé la option de fuerza bruta, para que use todos los algoritmos. No me comprimió ni un sólo byte extra.

Saludos!
ergio Cossa

http://www.fatherjoe.com.ar - Father Joe Mobile
http://www.fantasticzone.blogspot.com - Fantastic Zone Blog
http://www.fantasticzone.com.ar - Fantastic Zone Page
Argentina

zupervaca

Yo uso el photoshop cs como tu chechocossa y no se que hace, pero comprime los pngs que da gusto, por el momento no he encontrado aplicacion que me deje los pngs tan reducidos como el, no obstante hechare un vistazo a toda la info puesta por este hilo, por que 100bytes en un .jar son mucho :wink:

chechocossa

Cita de: "fiero"No me he metido todavia muy a fondo con el formato, pero una vez que le eché un vistazo por encima ví que el PNG utiliza mucho el concepto "scanlines" a la hora de comprimir. Es decir, comprime cada línea horizontal como unidad mínima de información. ¿Podrías hacer la prueba con tu animación a 13x1 a ver lo que sale? Quizás menos scanlines signifiquen menos tamaño en algunos casos.

Tomando en cuenta lo que dijo fiero, hice una prueba en Potoshop CS cambiando de lugar los frames, para que en cada línea de frames sólo haya imágenes pertenecientes al mismo sprite (todos colores parecidos)
No me importó dejar algunos huecos en otras líneas de frames.

En la versión original, el png resultante era de 6.112 bytes. Con la modificación, quedó en 5.978 bytes = 134 bytes menos.

Saludos!
ergio Cossa

http://www.fatherjoe.com.ar - Father Joe Mobile
http://www.fantasticzone.blogspot.com - Fantastic Zone Blog
http://www.fantasticzone.com.ar - Fantastic Zone Page
Argentina

zupervaca

No tengo ni idea de como trabaja el png, pero por si vale de algo... estas dos imagenes estan hechas con el photoshop cs, modo perceptual:

1211 bytes


1137 bytes


Como siempre tengo la imagen que contradice la regla :?

Editado: Pues creeme estaba haciendo la imagen para secundar lo que habias puesto, por que si no creo que recordar mal muchas veces hacia lo que decias para ahorrar espacio en disco.

chechocossa

zupervaca, no puede ser que vengas a rebatir lo que tanto me costó descubrir  :P

Será tal vez que al generar el png, analice si hace un scan horizontal, o vertical, o algo parecido, hasta encontrar el mejor porcentaje de compresión...

De todos modos, habría que leer sobre el tema, cosa que no haré ni mucho menos por ahora  8)
ergio Cossa

http://www.fatherjoe.com.ar - Father Joe Mobile
http://www.fantasticzone.blogspot.com - Fantastic Zone Blog
http://www.fantasticzone.com.ar - Fantastic Zone Page
Argentina

donald

CitarMmm, me parece que no me he explicado con claridad, me referia a que programa para comprimir el png me recomendarias en mi caso...

PNGCrush...Es que te lo había dicho ya en el otro post, por eso no creí que te refierieras a eso ;)

@checho..   Erm.Sí que debe comprimir más...bastante más. Deciros que esto no es una ciencia exacta. Depende de la imagen y tal.

creo que tepuede estar pasando...que...no tehas leído bien a fondo del todo ese pedazo de readme del Pngcrush...usa la versión última, si puede ser una con soporte MMX....

Una buena señal es que con todos los settings, para los graficos de un juego típico de móviles, se tire un ratito procesando para hacer las compresiones...

brute force, pero un puñado de settings más...leetelo bien...de todos modos....Un consejo, no basado en la ciencia, si no la experiencia... ;)
No cmprimas desde un ya salvado png por "salvar como web" , sino que...guarda normal como PNG desde adobe, en guardar como...creo que era así, si lo estabas probando al reves, prueba ahora lo contrario...
Lo que sí te digo es que funciona, vaya si funciona...y en móviles...es un ventajón...ya te digo, habrá gráficos en que la ganacia sea muy pequeña, pero muchos te dejarán ganar mucho más...

Y luego, el Tweakpng(pasadlo ANTES de pasar el compresor, el compresor, lo último) os sirve para quitar comentarios innecesarios...No dejesi de mirarlo!! Porque a veces esos chunks de texto suponen más bytes o ks de la cuenta, que no quereis para nada...ya te dice el tweak que es crítico y qué no...

Por algún lado leí que otro comprimía más, no sé si el gauntlet...el optipng...pero a mí el que más me comprime es el pngcrush...Eso sí, es msdos, o sea, hay que hacerse idóneamente un *.bat, y poner los settings, los parametritos (/b /f , lo que sea) y hacer trial y error hasta que veas que te da buen resultado. Yo es que no tengo a mano los settings, pero vaya que son los mismos, siempre. Hay unpuñado de parámetros que son los que te dan la cmpresión mayor.
Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S

donald

CitarEstá diseñada en Photoshop CS y guardada para web como PNG-8 y Perceptual.

Puedes tener un resultado parecido, aunque menos flexible, simplemente pasando a indexado con el menu modo en adobe , y luego salvas como png, no hace falta salvar para web, lo digo por hacer la prueba de que salvar para web es que no permita recomprimir luego o algo...

perceptual...o sea, usas error difussion. Eso es un entrelazado (no de carga, de imagen) eso es que coge los 64 colores y hace tramas...a veces, da como resultado tramas sucias, pero el grado de trama en salvar para web se puede cambiar.  A menudo, más colores y sin trama es menos memoria, puedes probar eso, porque la trama puede hacer muy dificil que se produzca buena compresión, supongoq poque no hay grandes areas iguales...
es la puñetería de tener que guardar las cosas en un bitmap con todos los frames...sería tal vez menos memoria si se pudiera guardar independientemente, pero igual las cabeceras de los archivos...no, no he dicho nada...ni tampoco que los graficos de paleta similar fueran los agrupados...para código o rendimiento esas cosas serían una barbaridad.

Imaginaros  una gran imagen de hiedra...es todo verde. Ahí 32 colores(incluso 16) dan una sensación de realismo total, con difussion. Ahora cogeis un set de sprite, con personajes con colores de ropa distintos, caras, etc...ni 64 colores darán un resultado ideal.
Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.