更改图片分辨率,但保持实际尺寸

问题描述:

有没有可能在客户端更改图片的分辨率(使用CSS,Javascript,不管),但保持它的大小在屏幕上?更改图片分辨率,但保持实际尺寸

例如:我想显示分辨率为20x10的尺寸为200x100的1920x1080图像。只需使用一个img元素,将其源和宽/高设置为20x10肯定可行,但现在我想显示尺寸为200x100的缩放图像。

难道这是不可能在服务器端生成一个新的图像吗?

+0

那么最终的图像看起来像素化? – Duopixel 2012-01-01 20:43:38

+0

你的意思是重新采样和调整大小? – Joseph 2012-01-01 20:52:20

+0

看到这里:http://*.com/questions/2369788/pure-javascript-image-handling-library-in-binary-form-not-through-dom它似乎有客户端支持图像处理已经。 – Joseph 2012-01-01 20:53:30

为此,您可以使用HTML5的画布:

既然你想给一个尺寸的200 X 20050分辨率X 50任何尺寸的原稿图像:

  1. 做一个画布50 x 50
  2. 用定义宽度和高度的参数绘制图像50
  3. 放大第e canvas through CSS to stretch it to 200 x 200

喜欢这个:http://jsfiddle.net/eGjak/234/

作为一个附注,HTML5 canvas在所有浏览器中都使用了抗锯齿技术,就我而言,无法将其关闭。所以,而不是像素化的结果,你会有模糊的结果。

// paint 200x200 image with resolution 50x50 
var w = 200, 
    h = 200, 
    p = 50, 
    q = 50; 

var img = $("img").get(0); 

img.onload = function() { 
    cv.width = p; // set canvas resolution 
    cv.height = q; 

    ctx.drawImage(img, 0, 0, p, q); // draw image with given resolution 

    cv.style.width = w + "px"; // enlarge canvas by stretching 
    cv.style.height = h + "px"; 
}; 

img.src = "http://www.lorempixum.com/300/300/"; 
+0

在画布内绘制图像并使用它的数据,因为新的图像源是我已经想到的解决方案。但首先我猜这是如此缓慢,当然使用浏览器需要支持的画布来支持HTML5 – user1039407 2012-01-01 20:57:27

+0

@ user1039407:如果你想要兼容,你最好在服务器端进行。如果将分辨率设置得较低,则不会很慢,因为画布上必须绘制相对较少的像素(通过CSS设置宽度似乎不会影响性能)。 – pimvdb 2012-01-01 20:59:20

+0

但是由于需要多次调用该方法,因此计算映像的时间将会过长。不过,使用画布并在旧版浏览器上禁用该功能将是最佳解决方案。 但是不存在其他可能性吗?例如,显示大小为50的图像元素,并以某种方式调整其内容的大小而不被“重绘”? – user1039407 2012-01-01 21:14:22