2015-08-14 25 views
21

MS Edge için bicubic ile bir görüntü ölçeği nasıl yapılır? Davranışı değiştirebilecek bazı CSS veya benzerleri var mı? üzerine, sen Solda oldukça netMicrosoft Edge Görüntü Ölçekleme

Chrome v Edge Moire pattern

Chrome'u garip eserler görebilirsiniz, arka plan dokulu olan iki resim vardır MS Kenar http://duttongarage.com/Race-Workshop~317

Sağda:

bu sayfaya bakın doğru. Gördüğünüz gibi, yeniden boyutlandırmanın en yakın komşu veya lineer olduğu, bicubik olmayan bir tuhaf hareli etkisi vardır. daha tipik

Başka bir örnek: Üstte Edge v Crhome Pixelation

Microsoft Kenar, Bottom Chrome. Pikselleştirmeye dikkat edin, son on yıldaki tarayıcılardan beklediğim gibi.

+0

görüntülerden 2x2 pikselli desen bindirmesini kolayca kaldırabilirsiniz :) –

+1

Bu, ölçeklemenin bariz bir eseriydi, anlattığım kadarıyla tüm görüntülere dönüşür. Başka bir örnek resim ekleyeceğim. –

+1

Geçerli bir resmi Doküman bulunamıyor. Henüz Edge'de bulunmamış olabilir mi? https://developer.mozilla.org/en/docs/Web/CSS/image-rendering –

cevap

0

Eski

Bu eskimiş bir çözümdür ve MS Edge'in son sürümlerinde çalışmaz. Ben gördüğünüz gibi Kenar doesn, cevap stupidness için

img { 
    -ms-interpolation-mode: bicubic; 
} 
+2

Bu, Edge build 12.10240 –

+1

'da hiçbir şey yapmıyor. Artık IE11'de hiçbir şey yapmıyor (en azından Win10'da) ---- dahiler bu hack'i kaldırarak, W ITHOUT bir demo olarak varsayılan motoru tamir ediyor, masaüstünüzde microsoft.com'a gidin, tarayıcı penceresini aşağıya indirin ve her iki MS tarayıcısının Chrome ve Firefox ile karşılaştırıldığında ne kadar kırıldığını görün. era ... – Rop

+0

@Rop: Mükemmel bir dünyada, önceden belirlenmiş özellikler üretimde * asla * kullanılmamalıdır. Aslında, birisi iyi bir yanıt veren site yapmaya çalışıyorsa, srcset özelliğinin farklı cihazlarda daha yumuşak bir yükleme süresi vermek için daha iyi bir seçenek olacağını düşünürdüm. – Katana314

2

Maalesef:

===========

Bu küçük css benim için sorun sabit tweak herhangi bir görüntü işleme seçeneğini desteklemez, bu nedenle lütfen resmini yeniden boyutlandırmak için jQuery'yi kullanmayı deneyin.

Örneğin, this answer den çözümü kullanabilirsiniz: sadece resmin altında <canvas id="canvas"></canvas> oluşturup bkz: Kolayca matematikle oc.width ayarlayabilirsiniz

screenshot

var canvas = document.getElementById("canvas"); 

var ctx = canvas.getContext("2d"); 

img = new Image(); 
img.onload = function() { 

    canvas.height = canvas.width * (img.height/img.width); 


    /// step 1 
    var oc = document.createElement('canvas'), 
     octx = oc.getContext('2d'); 

    oc.width = img.width * 0.5; 
    oc.height = img.height * 0.5; 
    octx.drawImage(img, 0, 0, oc.width, oc.height); 

    /// step 2 
    octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5); 

    ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5, 
    0, 0, canvas.width, canvas.height); 
} 
img.src = "http://duttongarage.com/img/2167/824"; 

. Örneğin, img.src için size

$("div.some-class-to-get img").each(function(){ 
    img.src = $(this).attr('src'); 
}); 

kullanabilirsiniz

| .me-wrap-image 
| .some-class-to-get-width-and-height 
-> img 

ederek yapısını ayarlamak eğer,

oc.width = $(".me-wrap-image").width(); 
oc.height = $(".me-wrap-image").height(); 

iyi kullanabilir Ama emin değilim, nasıl düzgün çalışması için Umarım düzeltin :)

+0

Bu ilginç bir çözüm, tarayıcı penceresini yeniden boyutlandırırken sıvı düzeniyle ne kadar iyi performans göstereceğinden emin değilim. –

+0

@ChrisSeufert, Teşekkür ederiz. Eh, evet. Tarayıcı penceresini yenilediğinizde resim yalnızca yeniden boyutlandırılır. Yorumlarımı deneyin ('oc.width = oc.width = $ (". Me-wrap-image "). Width();'). Sayfa yüklenince tarayıcı penceresini yeniden boyutlandırmayacaksanız, her şeyin doğru olacağını düşünüyorum. –

+0

@ChrisSeufert, ancak, arama yapabildiğim gibi, büyük şirketler bile bunu yapmıyor. Örneğin, JivoSite modülü. Sadece ONCE pozisyonunu üretir ve tarayıcı penceresini yeniden boyutlandırırsanız yeniden boyutlandırmaz. Ama OFC, sen 'window.setInterval (function() { // hatırlama fonksiyonu }, 5000) kullanabilirsiniz;' Ama, gerçekten mi? :) –

İlgili konular