2008-11-14 14 views
5

Estoy trabajando en un sitio web que usa muchos archivos png24 para mayor transparencia.¿Cómo se puede decir png8 desde un png24

Necesito reemplazarlos con archivos png8, ya que todas las soluciones temporales de png fix javascript para png24 hacen que IE6 se bloquee aleatoriamente.

Vea este enlace para tener una idea de las pantallas de los síntomas de IE6 - http://blogs.cozi.com/tech/2008/03/transparent-pngs-can-deadlock-ie6.html

¿Alguien sabe una manera fácil de apuntar a archivos PNG24 existentes, para sustituirlos por los png8s?

Estoy usando un OS X, y los navegadores de archivos como Adobe bridge no muestran esto, ni puedo encontrar la información en la línea de comandos o el buscador.

¡Ayuda!

Respuesta

7

La utilidad file en OSX le puede decir la profundidad de color en un archivo PNG, por ejemplo:

% file foo.png 
foo.png: PNG image data, 1514 x 1514, 8-bit grayscale, non-interlaced 
1

Creo que podría estar haciendo la pregunta equivocada. Los PNG8 no tienen el alfa verdadero en el que has estado trabajando para solucionarlo en IE6. Si reemplaza el PNG24s con PNG8s no está mejor que reemplazarlos con GIF.

Tal vez podría probar una secuencia alternativa de sustitutos/correcciones: hay algunas muy malas, ¿no es ahí donde está el problema?

Aquí está (y digo esta lengua en la mejilla!) the right question.

+2

PNG-8 en realidad soporta el almacenamiento de un valor alfa con todos los colores en el paladar, por lo que, con él a la derecha del programa y optimización, que puede parecer grande. Ver una de las otras respuestas. –

+3

PNG8 no es lo mismo que GIF, ya que PNG8 puede almacenar píxeles semitransparentes, donde los GIF no pueden. Photoshop no tiene esta capacidad (al intentar guardar para la Web), pero está muy claro cuando se usa Fireworks para exportar como PNG8. – RussellUresti

1

JoeBloggs tiene razón, usted está haciendo la pregunta incorrecta.

Nunca he tenido IE6 romper con un buen script pngfix. O tienes un script pngfix malo o una mala instalación de IE6.

PNG8 arruinará sus agradables transparencias y hará que parezca que está utilizando GIF.

3

En realidad, puede obtener transparencia alfa en PNG-8, pero es muy complicado. http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/ http://www.personal.psu.edu/drs18/blogs/davidstong/2007/09/png8_alpha_transparency_from_f.html

Básicamente crea GIF como la sustancia para IE6 y PNG real con transparencia alfa para los mejores navegadores. Es un camino de degradación más agradable. En este momento, creo que necesitas Fireworks, pero estoy explorando otras opciones.

2

Para añadir a la respuesta de Alnitak, una vez que encuentre todo PNG24 desea convertir, se puede tratar por todos con pngquant:

pngquant -v -f --ext .png 256 *.png 

Esto convierte todos los archivos PNG a PNG8 en su lugar, sobrescribiendo ellos.

+0

Tenga en cuenta que esto convierte PNG RGBA de 32 bits en PNG RGBA de paleta de 8 bits * o menores *. Puede verificar la paleta ejecutando 'pngcheck * .png'. Si necesita absolutamente una paleta de 8 bits por algún motivo, consulte [esta respuesta] (https://stackoverflow.com/a/1468389/96656). –

+0

@MathiasBynens AFAIK ImageMagick también hace recuento de colores, por lo que (aparte de la calidad inferior) no es diferente de pngquant cuando la imagen termina necesitando solo 4 o 2 bits. – Kornel

+0

Lo había probado antes de publicar mi comentario anterior. [Esta imagen de ejemplo] (https://tibiamaps.github.io/tibia-map-data/minimap-with-markers/Minimap_Color_32000_32000_7.png) va de 32 bits RGB + alpha a una paleta de 8 bits usando 'convert' , mientras que 'pngquant' lo optimiza a una paleta de 4 bits. (En el 99% de todos los casos sería deseable, sin embargo tengo este extraño caso de uso en el que necesito una paleta que sea exactamente de 8 bits). –

1

pngcheck, una herramienta de línea de comandos, puede volcar la información que necesita. http://www.libpng.org/pub/png/apps/pngcheck.html

pngcheck.exe a.png 
OK: a.png (1024x1024, 32-bit RGB+alpha, non-interlaced, 80.7%). 

pngcheck.exe b.png 
OK: b.png (1024x1024, 8-bit palette+trns, non-interlaced, 83.1%). 
Cuestiones relacionadas