我需要提供一种手段,为用户上传照片到他们的网站在jpeg格式。然而,照片的原始尺寸非常大,我想让用户在上传之前调整大小的选项非常容易。似乎我唯一的选择是一个客户端应用程序,它在通过web服务上传照片之前调整它们的大小,或者是上传操作上的一个客户端JavaScript钩子来调整图像的大小。第二种选择是非常试探性的,因为我没有JavaScript图像大小调整库,而且很难让JavaScript运行我当前的调整大小工具ImageMagick。
我相信这并不是什么稀奇古怪的场景,我们将非常感谢一些相关网站的建议或指点。
发布于 2011-12-06 17:39:11
在2011年,我们可以使用File API和canvas来做到这一点。这目前只适用于firefox和chrome。下面是一个示例:
var file = YOUR_FILE,
fileType = file.type,
reader = new FileReader();
reader.onloadend = function() {
var image = new Image();
image.src = reader.result;
image.onload = function() {
var maxWidth = 960,
maxHeight = 960,
imageWidth = image.width,
imageHeight = image.height;
if (imageWidth > imageHeight) {
if (imageWidth > maxWidth) {
imageHeight *= maxWidth / imageWidth;
imageWidth = maxWidth;
}
}
else {
if (imageHeight > maxHeight) {
imageWidth *= maxHeight / imageHeight;
imageHeight = maxHeight;
}
}
var canvas = document.createElement('canvas');
canvas.width = imageWidth;
canvas.height = imageHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(this, 0, 0, imageWidth, imageHeight);
// The resized file ready for upload
var finalFile = canvas.toDataURL(fileType);
}
}
reader.readAsDataURL(file);
发布于 2010-03-03 16:02:07
有一个支持多种技术的Plupload tool,它声明它可以在上传之前调整大小,但我还没有尝试过。我也在我的question about binary image handling javascript libs中找到了一个合适的答案。
发布于 2009-06-07 13:53:53
我认为你需要Java或ActiveX来实现。例如Thin Image Upload
https://stackoverflow.com/questions/961913
复制相似问题