【问题标题】:Microsoft Edge Image ScalingMicrosoft Edge 图像缩放
【发布时间】:2015-11-07 03:33:28
【问题描述】:

如何为 MS Edge 制作双三次图像比例?是否有一些 CSS 或类似的东西可以改变行为。

查看此页面:http://duttongarage.com/Race-Workshop~317

右边有两张带纹理背景的图片,你可以很清楚地看到奇怪的伪影

左侧为 Chrome,右侧为 MS Edge。如您所见,调整大小为最近邻或线性,而不是双三次,会产生一些奇怪的莫尔效应。

另一个更典型的例子:

顶部是 Microsoft Edge,底部是 Chrome。注意像素化,就像我对过去十年浏览器的期望一样。

【问题讨论】:

  • 您可以简单地从图像中删除 2x2 像素化图案叠加层 :)
  • 这只是缩放的明显产物,据我所知,它发生在所有图像上。我将添加另一个示例图像。
  • 找不到任何有效的官方文档。难不成还没有登陆Edge? developer.mozilla.org/en/docs/Web/CSS/image-rendering
  • 我也找不到任何关于它的信息,而且谷歌搜索“Edge”似乎不是特别有用。
  • 3 年后,这个问题还没有解决....

标签: css microsoft-edge


【解决方案1】:

已过时

这是过时的解决方案,不适用于最新版本的 MS Edge。

============

这个小小的 CSS 调整为我解决了问题:

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

【讨论】:

  • 这在 Edge build 12.10240 中没有任何作用
  • 现在它在 IE11 中也没有任何作用(至少在 Win10 中)----天才们删除了这个黑客,没有修复默认引擎----作为演示,浏览到 microsoft.com在您的桌面上,缩小浏览器窗口,看看这两款 MS 浏览器与 Chrome 和 Firefox 相比有多糟糕----在这个响应迅速的时代令人难以置信......
  • @Rop:在完美的世界中,前缀属性应该永远在生产中使用。实际上,如果有人试图制作一个好的响应式网站,我认为 srcset 功能将是一个更好的选择,可以在不同的设备上提供更流畅的加载时间。
【解决方案2】:

抱歉回答的愚蠢,但是,正如我所见,Edge 不支持任何图像渲染选项,所以,请尝试使用 jQuery 调整图片大小。

例如,您可以使用来自this answer 的解决方案: 只需在您的图像下创建<canvas id="canvas"></canvas> 并查看:

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";

您可以使用数学轻松调整 oc.width。例如,您可以使用

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

如果你调整结构会更好

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

对于 img.src 你可以使用

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

但我不确定如何使它正常工作。 希望你修复它:)

【讨论】:

  • 这是一个有趣的解决方案,我不确定在调整浏览器窗口大小时它在流畅布局下的表现如何。
  • @ChrisSeufert,谢谢。嗯,是的。仅当您刷新浏览器窗口时,图像才会调整大小。试试我的 cmets (oc.width = oc.width = $(".me-wrap-image").width();)。如果您在页面加载后不调整浏览器窗口大小,我相信一切都会好起来的。
  • @ChrisSeufert,但是,我可以搜索到,即使是大公司也不这样做。例如,JivoSite 模块。他只生成一次他的位置,仅此而已,如果您调整浏览器窗口的大小,他不会调整大小。但是,OFC,你可以使用window.setInterval(function(){ // recall function }, 5000); 但是,真的吗? :)
  • @Stanislav Talanov,Microsoft Edge 不支持图像渲染选项这仍然是真的吗?我已经使用 css transform: scale(2)-ms-interpolation-mode: nearest-neighbor 等放大了一个图标,并且在所有浏览器中,该图标都非常前卫且有锯齿,但在 MS Edge 中,它的抗锯齿丑陋。任何建议如何像素化 MS Edge 中调整大小的图像?
猜你喜欢
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
相关资源
最近更新 更多