更改图片分辨率,但保持实际尺寸
有没有可能在客户端更改图片的分辨率(使用CSS,Javascript,不管),但保持它的大小在屏幕上?更改图片分辨率,但保持实际尺寸
例如:我想显示分辨率为20x10的尺寸为200x100的1920x1080图像。只需使用一个img元素,将其源和宽/高设置为20x10肯定可行,但现在我想显示尺寸为200x100的缩放图像。
难道这是不可能在服务器端生成一个新的图像吗?
为此,您可以使用HTML5的画布:
既然你想给一个尺寸的200
X 200
和50
分辨率X 50
任何尺寸的原稿图像:
- 做一个画布
50
x50
- 用定义宽度和高度的参数绘制图像
50
- 放大第e canvas through CSS to stretch it to
200
x200
。
喜欢这个: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/";
在画布内绘制图像并使用它的数据,因为新的图像源是我已经想到的解决方案。但首先我猜这是如此缓慢,当然使用浏览器需要支持的画布来支持HTML5 – user1039407 2012-01-01 20:57:27
@ user1039407:如果你想要兼容,你最好在服务器端进行。如果将分辨率设置得较低,则不会很慢,因为画布上必须绘制相对较少的像素(通过CSS设置宽度似乎不会影响性能)。 – pimvdb 2012-01-01 20:59:20
但是由于需要多次调用该方法,因此计算映像的时间将会过长。不过,使用画布并在旧版浏览器上禁用该功能将是最佳解决方案。 但是不存在其他可能性吗?例如,显示大小为50的图像元素,并以某种方式调整其内容的大小而不被“重绘”? – user1039407 2012-01-01 21:14:22
那么最终的图像看起来像素化? – Duopixel 2012-01-01 20:43:38
你的意思是重新采样和调整大小? – Joseph 2012-01-01 20:52:20
看到这里:http://*.com/questions/2369788/pure-javascript-image-handling-library-in-binary-form-not-through-dom它似乎有客户端支持图像处理已经。 – Joseph 2012-01-01 20:53:30