有没有一种方法可以在jQuery中更改(变大)图像的大小而不影响图像的质量?
这只是调整大小,但你不能保留原有的质量来调整大小。
var max_size = 200;
$("img").each(function(i) {
if ($(this).height() > $(this).width()) {
var h = max_size;
var w = Math.ceil($(this).width() / $(this).height() * max_size);
}
else {
var w = max_size;
var h = Math.ceil($(this).height() / $(this).width() * max_size);
}
$(this).css({ height: h, width: w });
});
对于普通的光栅图像(bmp,jpg,png等),使用客户端JavaScript调整大小会影响质量,因为图像的质量是有限的。一种方法是使用非常高质量的8000x8000图像,然后使用CSS将其缩小到所需的大小。
img{
width:800px;
height:600px;
}
$("img").css("width","1024px");
$("img").css("height","768px");
有很多关于使用任何语言进行服务器端重新取样的问题。
更新
您没有说明使用哪种图像格式,您可以考虑使用SVG和HTML5,然后您将能够在客户端调整大小而不会降低质量。
您可以通过更改图像的宽度和高度属性,使用jquery来缩放图像。但我并不太明白有关图像质量受损的部分,因为图像质量将与您上传的图像完全相同。
jQuery没有直接的方法来实现这个功能。你可以尝试使用Flash或者Applet来解决问题。
或者
你可以尝试将图像渲染到画布上,然后对画布中的像素应用缩放算法(双线性、双三次等),并将输出渲染到另一个画布上。完成后,你可以从画布中获取图像数据,并通过AJAX发送回服务器进行保存。有关缩放算法的更多信息,请参考:http://en.wikipedia.org/wiki/Image_scaling)