2010-10-10 17 views
39

Tengo una imagen que es 100x100 en píxeles. Quiero mostrar el doble de tamaño, así que 200x200 y quiero hacerlo por CSS y (explícitamente) no por el servidor.Escalado de imagen por CSS: ¿existe una alternativa de webkit para -moz-crisp-edges?

Desde hace unos años, las imágenes son antialias por todos los navegadores en lugar de hacer una escala de píxel.

Mozilla permite especificar el algoritmo: image-rendering: -moz-crisp-edges; Lo mismo ocurre con IE: -ms-interpolation-mode: most-neighbor;

¿Alguna alternativa conocida de webkit?

Respuesta

82

WebKit ahora es compatible con la directiva CSS:

image-rendering:-webkit-optimize-contrast; 

Usted puede ver su funcionamiento en la acción usando Chrome y la última imagen de esta página:
http://phrogz.net/tmp/canvas_image_zoom.html

Las reglas utilizadas en esa página son:

.pixelated { 
    image-rendering:optimizeSpeed;    /* Legal fallback */ 
    image-rendering:-moz-crisp-edges;   /* Firefox  */ 
    image-rendering:-o-crisp-edges;   /* Opera   */ 
    image-rendering:-webkit-optimize-contrast; /* Safari   */ 
    image-rendering:optimize-contrast;   /* CSS3 Proposed */ 
    image-rendering:crisp-edges;    /* CSS4 Proposed */ 
    image-rendering:pixelated;     /* CSS4 Proposed */ 
    -ms-interpolation-mode:nearest-neighbor; /* IE8+   */ 
} 
+2

Tenga en cuenta que a partir de este momento esto funciona en Chrome y Safari en OS X, pero no en Windows. – Phrogz

+0

respuesta muy útil gracias –

+12

No hace ninguna diferencia en Chrome/Safari aquí – Rob

2

Además de @Phrogz respuesta muy útil y después de leer esto: https://developer.mozilla.org/en-US/docs/CSS/image-rendering

Parece que la mejor CSS sería la siguiente:

image-rendering:optimizeSpeed;    /* Legal fallback     */ 
image-rendering:-moz-crisp-edges;   /* Firefox      */ 
image-rendering:-o-crisp-edges;    /* Opera       */ 
image-rendering:-webkit-optimize-contrast; /* Chrome (and eventually Safari) */ 
image-rendering:crisp-edges;    /* CSS3 Proposed     */ 
-ms-interpolation-mode:bicubic;    /* IE8+       */ 
+2

'bicubic'? OP dice 'vecino más cercano' está bien en IE. – lapo

+0

@lapo He probado personalmente diferentes valores en varios navegadores y esto me dio el mejor resultado cuando aumenté la escala, también probé en IE porque era un navegador crítico al hacer esto iirc –

+2

A partir de mayo de 2015, esta respuesta no da resultados pixelados en la versión actual de IE. –

Cuestiones relacionadas