2010-10-10 20 views
39

我有一個100x100像素的圖像。我想顯示它的兩倍大小,所以200x200,我想通過CSS和(明確)不是由服務器來完成。通過CSS縮放圖像:是否有-moz-crisp-edges的webkit替代方案?

由於幾年以後,圖像會被所有瀏覽器消除鋸齒,而不是逐像素地縮放。

Mozilla允許指定算法:圖像渲染:-moz-crisp-edges; IE也是這樣:-ms-interpolation-mode:nearest-neighbor;

任何已知的webkit替代品?

回答

82

的WebKit現在支持CSS指令:

image-rendering:-webkit-optimize-contrast; 

你可以看到它在行動這個頁面上使用Chrome的最後形象工作:
http://phrogz.net/tmp/canvas_image_zoom.html

該頁面上使用的規則是:

.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

請注意,在撰寫本文時,這適用於OS X上的Chrome和Safari,但不適用於Windows。 – Phrogz 2012-05-23 15:10:11

+0

非常有用的答案謝謝 – 2012-11-21 11:44:54

+12

Chrome/Safari在這裏沒有任何區別 – Rob 2013-02-20 12:53:16

2

除了@Phrogz非常有用的答案,看完這個:https://developer.mozilla.org/en-US/docs/CSS/image-rendering

這似乎是最好的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在IE中說「最近鄰居」是可以的。 – lapo 2014-10-07 12:54:26

+0

@lapo我在不同的瀏覽器上親自測試了不同的值,並且這在升級時給出了最好的結果,我也在IE上測試過,因爲這是一個關鍵的瀏覽器,當這個iirc – 2014-10-07 13:36:07

+2

截至2015年5月,這個答案不會給出像素化結果在當前版本的IE上。 – 2015-05-15 19:03:53