【发布时间】:2014-04-12 17:13:19
【问题描述】:
在您说这是一个现有问题,或者我只需要使用 ms-interpolation-mode,或者我只需要在服务器上拥有图像的预缩放版本并提供之前,请阅读这个问题。请。这些都不合适。
我有一个应用程序,它在所有现代浏览器的浏览器中使用 HTML5 画布绘制一个非常大的图像。我从画布中拉出一张图像并显示它(在屏幕上大大缩小了尺寸)。缩小的图像在 Chrome、Firefox、Safari 或 Opera(无论是 Windows 还是 Mac)上看起来都很好。然而,IE 看起来非常糟糕,即使我没有在旧版本的 IE 上进行测试(比如 ms-interpolation-mode 工作的 IE 7),但只在 IE 9、10 和 11 上测试。
为什么它们不能平滑地缩小图像?我认为更高版本的 IE 可以做到这一点?
这是我保存为 PNG 文件并在 IE 11 中加载的图像的屏幕截图。请注意,即使我所做的只是查看 PNG,它也会损坏。我的软件和网页完全不在此处。这只是显示 PNG 文件的 IE 11。
我是否必须在画布中进行某种调整,以便为 IE 制作缩小版,因为它们无法处理市场上所有其他浏览器都可以轻松处理的图像缩放?有什么我可以通过 CSS 打开来使它看起来更好吗?
这是生成的图像之一的直接链接:http://i.imgur.com/T9wgHSo.png。向我展示如何在 IE 9、10 和 11 的页面中以更小(例如 0.25 倍)的尺寸使这个看起来不错。
【问题讨论】:
-
您使用什么机制进行扩展?如果你在 IE 中完全绘制它会发生什么?您是否尝试过全比例绘制并设置画布缩放因子?
-
你是用它的数据URL作为
<img>标签的来源来展示它,然后用CSS限制图像的大小吗? (要求澄清。)首先它是如何到达<canvas>的? edit 哦等等,别管最后一部分了。 -
关于
ng-src属性:您使用的是angular.js 吗?根据this thread,Angular 对 MSIE 浏览器有特殊处理。也许这就是您所看到的行为的根源。 -
我已经成功地让你的可怕显示跨浏览器:尝试#img { -webkit-transform: scale(0.21) translateZ(1px); -webkit-transform-origin:左上角;变换:缩放(0.21)translateZ(1px);变换原点:左上角; (并删除 img 本身的维度)。它会在 IE、FF 和 Chrome 中失败。可能会给某人一个线索...
标签: javascript css image internet-explorer canvas