Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE 11、10和9中的图像缩放非常糟糕_Javascript_Css_Image_Internet Explorer_Canvas - Fatal编程技术网

Javascript IE 11、10和9中的图像缩放非常糟糕

Javascript IE 11、10和9中的图像缩放非常糟糕,javascript,css,image,internet-explorer,canvas,Javascript,Css,Image,Internet Explorer,Canvas,在你说这是一个现有的问题,或者我需要使用的是ms插值模式,或者我只需要在服务器上有一个预缩放版本的图像并提供它之前,阅读这个问题。请这些都不合适 我有一个应用程序,在所有现代浏览器的浏览器中使用HTML5画布绘制非常大的图像。我从画布中拉出一个图像并显示它(屏幕上的图像尺寸大幅缩小)。缩小后的图像在Chrome、Firefox、Safari或Opera(无论是Windows还是Mac)上看起来都很好。然而,IE看起来非常糟糕,尽管我没有在旧版本的IE上测试它(比如IE 7中ms插值模式的工作方式

在你说这是一个现有的问题,或者我需要使用的是ms插值模式,或者我只需要在服务器上有一个预缩放版本的图像并提供它之前,阅读这个问题。请这些都不合适

我有一个应用程序,在所有现代浏览器的浏览器中使用HTML5画布绘制非常大的图像。我从画布中拉出一个图像并显示它(屏幕上的图像尺寸大幅缩小)。缩小后的图像在Chrome、Firefox、Safari或Opera(无论是Windows还是Mac)上看起来都很好。然而,IE看起来非常糟糕,尽管我没有在旧版本的IE上测试它(比如IE 7中ms插值模式的工作方式),但只在IE 9、10和11上测试


为什么它们不能平滑地缩小图像?我以为后来的IE版本可以做到这一点

这是我的图像截图,保存为PNG文件并加载到IE 11中。请注意,即使我所做的只是查看PNG,它也会被破坏。我的软件和我的网页完全不在这里。这只是IE11显示的PNG文件

我是否要在画布上做一些调整,只是为了为IE制作一个缩小版,因为它们无法处理市场上其他浏览器都能轻松处理的图像缩放?有没有什么我可以通过CSS打开,使这看起来更好


以下是指向生成的图像之一的直接链接:。演示如何在IE 9、10和11的页面中以明显更小(例如0.25倍)的大小使其看起来更好。

似乎有两个问题。 第一个是关于缩小规模的

"严格使用",;
var img=document.getElementsByTagName('img')[0];
document.body.appendChild(downScaleImage(img,0.1));
img.parentNode.removeChild(img);
函数缩尺图像(img,scale){/*请从另一个答案中复制代码*/}
函数缩尺画布(cv,缩放){/*请从另一个答案中复制代码*/}

为什么他们不能平滑地缩小图像?因为InternetExplorer不再支持平滑的插值形式。在早期版本的Internet Explorer(版本7)中,它确实通过使用ms插值模式得到支持

IE的较新版本不支持此功能。这是一个非常令人沮丧的IE问题,CSS无法解决

您唯一的选择是转向其他选择(在服务器上缩小规模,或者服从Microsoft并使用Silverlight…;-))


我不想说,但唯一真正的解决办法就是接受它

在我自己遇到同样的问题后,我找到了这个脚本。我在IE11的Win7虚拟机上测试了它,它运行正常

下载.zip后,您可以打开demo.html文件,查看如何应用脚本。请注意,在HTML文件的第26行,jQuery代码只针对类为“first”的图像:

但您可以删除“.first”使其成为所有图像的目标:

$('img.first').bicubicImgInterpolation({
这就是你所需要的
jquery.js
bicubicInterpolation.js
,以及调用该函数的

标签中的这些项目可能也是一个好主意:

$('img').bicubicImgInterpolation({


您使用什么机制进行缩放?如果在IE中以全比例绘制会发生什么?您是否尝试过以全比例绘制并设置画布比例因子?是否使用其数据URL作为
标记的源,然后使用CSS约束图像的大小来显示它?(要求澄清。)首先它是如何到达
的?编辑oh wait,不要介意最后一部分。关于
ng src
属性:您使用的是angular.js吗?根据,Angular对MSIE浏览器进行了特殊处理。也许这就是你看到的行为的根源。原因如下:我成功地制作了你糟糕的显示交叉浏览器:try 35; img{-webkit transform:scale(0.21)translateZ(1px);-webkit transform origin:top left;transform:scale(0.21)translateZ(1px);transform origin:top left;}(并移除img本身中的尺寸)。它将在IE、FF和Chrome中失败。可能是这给了某人一个线索…没有服务器。整个页面都是JavaScript运行客户端并通过HTML画布生成图像。服务器端缩放可以将丑陋程度降至最低,但无助于响应重新调整大小或客户端动画…MS应该避免使用现有的浏览器多年来,网络开发人员的时间在全球范围内被烧掉,这对地球造成了毁灭性的破坏,这只是一个巨大的成本。这是另一个客户端替代方案:
$('img').bicubicImgInterpolation({
<!-- enable canvas for old versions of IE -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="edit-Type" edit="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">