我的问题是将照片上传到网络服务器。
我最近观察到在Facebook上传照片时可以上传(默认情况下)上传的照片比我们要求的要少。
现在,我可以考虑上传全尺寸照片并在到达服务器时进行压缩。
但是,facebook如何在上传时调整图片大小
Is there any request header (I think there is not) that asks browser to upload specific size image and manipulate the exif/jpeg data in the file.
如果没有,某些插件/ Flash / Javascript必须从我们的系统中读取文件/图像。 Does web standard really allow file reading from the user system?
请告知。
的问候,
Mayank
答案 0 :(得分:2)
在将图片上传并保存到目标目录之前,网站/网络服务器无法对图像执行任何操作。它必须接收全尺寸图像,然后将其重新设置为所需的大小[生成缩略图等]。您没有描述过请求标题。
Web标准不允许从用户硬盘读取文件。他们允许的是从硬盘中选择文件,然后发送到服务器 - 主动是在客户端,而不是服务器。
还有什么你想知道的吗?
<强>更新强>
请参阅:Flash upload image resize client side
正如我所说 - 没有外部机制,我们无能为力。但当然,如果我们考虑Flash,Google Gears等等,一切皆有可能。
答案 1 :(得分:1)
目前并非所有浏览器都能容纳它,但HTML5中的某些功能会在图像通过网络发送之前调整图像大小。
Look at hacks.mozilla.org... for more details
摘自以上链接:
调整图像大小
人们习惯上传图片 直接从他们的相机。这给了 高分辨率和极重 (几兆字节)文件。取决于 用法,您可能想要调整大小 图片。一个超级简单的技巧是 只需要一个小帆布(800×600 例如)并绘制图像标签 进入这个画布。当然,你会的 必须更新画布尺寸 保持图像的比例。
var MAX_WIDTH = 800;
var MAX_HEIGHT = 600;
var width = img.width;
var height = img.height;
if (width > height) {
if (width > MAX_WIDTH) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
} else {
if (height > MAX_HEIGHT) {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
}
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height)