2010-10-10 14 views
39

Mam obraz o wielkości 100x100 w pikselach. Chcę pokazać dwa razy większy rozmiar, więc 200x200 i chcę to zrobić przez CSS i (jawnie) nie przez serwer.Skalowanie obrazu według CSS: czy istnieje alternatywa dla webkita dla -moz-crisp-edges?

Od kilku lat obrazy są wygładzane we wszystkich przeglądarkach, a nie w skali pikseli.

Mozilla pozwala określić algorytm: renderowanie obrazu: -moz-ostry-brzegi; Podobnie dzieje się z IE: -ms-interpolation-mode: nearest-neighbour;

Dowolna znana alternatywa dla webkitów?

Odpowiedz

82

WebKit obsługuje obecnie dyrektywę CSS:

image-rendering:-webkit-optimize-contrast; 

widać to działa w akcji za pomocą Chrome i ostatni obraz na tej stronie:
http://phrogz.net/tmp/canvas_image_zoom.html

Zasady stosowane na tej stronie:

.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

Pamiętaj, że od tego momentu działa to w przeglądarce Chrome i Safari w systemie OS X, ale nie w systemie Windows. – Phrogz

+0

Bardzo przydatna odpowiedź dzięki –

+12

Nie ma znaczenia w Chrome/Safari tutaj – Rob

2

Oprócz @Phrogz bardzo użyteczną odpowiedź i po przeczytaniu tego: https://developer.mozilla.org/en-US/docs/CSS/image-rendering

Wydaje się, że najlepiej byłoby to CSS:

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 mówi, że "najbliższy sąsiad" jest w porządku w IE. – lapo

+0

@lapo Próbowałem osobiście przetestować różne wartości w różnych przeglądarkach, co dało najlepszy rezultat podczas skalowania, przetestowałem również na IE, ponieważ była to krytyczna przeglądarka podczas wykonywania tego iirc –

+2

Od maja 2015 ta odpowiedź nie daje wyników w postaci pikselizacji na aktualnej wersji IE. –

Powiązane problemy