2008-12-23 25 views
22

Cuando escalamos visualmente una imagen, Firefox 3 la desenfoca. Firefox 2 y otros navegadores no, que es el comportamiento que espero. Esto es especialmente cojo para crear un juego basado en web usando png o gif sprites.Firefox difumina una imagen cuando se escala a través de CSS externo o estilo en línea.

Por ejemplo, cuando se muestra una imagen de 100x100 en Firefox 3 como esto:

<img src="sprite.gif" width="200" /> 

o

<img src="sprite.gif" style="width:200px; height:200px;" /> 

se ve borrosa en FF3, no en IE.

¿Alguna idea sobre cómo prevenir esto?

Respuesta

33

descubrí esta nueva característica de Firefox:

http://developer.mozilla.org/En/CSS/Image-rendering

Así que poner esto en tu CSS lo arreglará:

image-rendering: -moz-crisp-edges; 

pensé en compartir esta información. Perdón por responder mi propia pregunta;)

+11

¡No hay de qué avergonzarse al responder su propia pregunta! –

+1

Una cosa a tener en cuenta es que las imágenes fotográficas se ven mejor con la solución, pero las imágenes con texto incrustado o muchas líneas gráficas se ven dañadas. – user1010892

+1

Hay una solución relativamente fácil que publiqué [aquí] (http://stackoverflow.com/questions/5918595/why-is-firefox-so-bad-at-resizing-images#answer-14308227) –

4

Está escalando la imagen desde su tamaño original - el efecto deseado es normalmente para tener una escala suave, y parece que FFX3 ha comenzado a hacer esto (supongo que es un filtro bilineal). Creo que si miras Safari y Opera, verás que también filtran la imagen.

1

En realidad, prefiero la forma en que FF lo hace, ya que utiliza la interpolación al escalar las imágenes, en la mayoría de los casos esto hace que las imágenes se vean mucho mejor que en IE. Sin embargo, creo que puede haber casos en los que no es bueno, como cuando se usan sprites.

No creo que haya una manera de evitarlo.

0

Debe evitar escalar la imagen en el lado del cliente. Escalar una imagen hacia arriba es como hacer zoom, el navegador no tiene la información para que la imagen lo muestre en una resolución más alta de lo que realmente es, por lo que no puede hacer eso sin difuminar la imagen, tal vez no se note en IE, intente cambiando 200px a 400px.

1

Desafortunadamente no tengo una solución para esto, pero esto es un motivo de ruptura completa para un gran número de usuarios (por ejemplo, artistas de píxeles) Si se ve afectado por esto, por favor envíe sus comentarios a http://hendrix.mozilla.org/ y voto. para el corresponding bug.

Es decepcionante que Mozilla esté ignorando este problema. Para los muchos usuarios afectados, significa que no hay más remedio que cambiar de navegador. IE tiene un CSS property para seleccionar el filtro de cambio de tamaño, por lo que esta parece ser la mejor opción.

Aquí está el bug report para Google Chrome, que tiene el mismo problema que Firefox. No sé nada de Opera, pero escuché que usan algunas heurísticas para una escala automática más sana.

+1

Debe dibujar su imagen en el tamaño que debe visualizarse. Si quieres hacer pixel art con grandes píxeles, utiliza píxeles realmente grandes. El comportamiento de Firefox 3 hace un mejor trabajo para preservar la forma de la imagen real: cuando miro un pequeño JPEG, no veo un montón de cuadrados. – Chuck

+0

¿Qué pasa con los cambios dinámicos de tamaño de imagen a través de JS? ¿Qué pasa con el aumento del tamaño de las imágenes explotadas? Para los archivos JPEG, el filtrado bilineal tiene sentido, pero para PNG y GIF generalmente no es lo correcto. Este es un error importante, IE muestra cómo hacerlo bien. – nikow

+0

¿Por qué debería el esquema de compresión hacer la diferencia? El escalado bilineal o bicúbico * es * lo correcto a menos que * quiera * distorsión y pixation. Está más cerca de la percepción visual de la imagen que el vecino más cercano, que IE utiliza IIRC. http://www.codinghorror.com/blog/archives/000367.html – Chuck

2

http://developer.mozilla.org/En/CSS/Image-rendering solo se aplica a las compilaciones de troncales actuales de Firefox (Minefield/3.6a1pre/Gecko 1.9.2). Esta característica no está en Firefox 3.0 y no estará en la próxima versión 3.5. El primer lanzamiento con esa opción será el próximo lanzamiento importante después de 3.5 que actualmente se encuentra en las primeras etapas de planificación, con un lanzamiento estimado en 2010.

1

Me pregunto si obtendrías mejores resultados si creas los sprites al tamaño más grande que esperas para ser vistos, y luego escalarlos según sea necesario?

2

Internet Explorer 8 también "desenfoca" las imágenes de forma predeterminada al escalarlas. Esto es realmente algo bueno. La mayoría de las imágenes se ven mejor cuando se escalan utilizando un muestreo bicúbico en lugar del muestreo del vecino más cercano.

Si desea que Internet Explorer 8 para reducir las imágenes como las versiones precedentes, así, poner esto en tu CSS:

-ms-interpolation-mode: nearest-neighbor; 

Si desea que Internet Explorer 7 para reducir las imágenes como el IE 8, utilice esto:

-ms-interpolation-mode: bicubic; 

Aparte del aspecto de la imagen, también debe tener en cuenta el rendimiento. Descubrí que IE 7 e IE 8 necesitan mucha más potencia de CPU para escalar imágenes cuando se utiliza muestreo bicúbico que Firefox 3.6.

Cuestiones relacionadas