上传前图像大小调整,无需预览 javascript
Image resize before upload without preview javascript
我想避免上传大/重的图像文件。
我更喜欢HTML5文件API库来完成这项工作。
添加了所有其他功能(上传、重新排序等),所以我只需要图像调整大小功能。
箱:
页面上有多个文件的输入。
在输入更改事件(添加文件时),调整输入的图像/文件的大小并将它们附加到 FormData(),然后通过 ajax 将 FormData() 发送到 PHP 脚本。
例:
$('input').on('change',function(){
var formData = resizeImages(this.files[0]);
uploadResizedImages(formData);
});
function resizeImages(files){
formData = new FormData();
//For each image, resize it and append to formData
//resize file part missing....
formData.append('files[]',this);//Appending to formData (this = currently iterated file)
return formData;//Return the formData with resized images
}
任何人?
谢谢
根据我的经验,您无法在客户端操作图像,然后通过表单中的文件输入上传处理后的图像。
我做你过去试图做的事情的方式涉及几个步骤。
- 使用文件输入选择图像
- 将文件作为数据 URL 读取
- 根据需要使用画布处理图像
- 将新图像导出为数据网址
- 使用 ajax 将图像作为数据URL上传到服务器
- 使用服务器端函数将 dataUrl 转换为图像并存储
https://jsfiddle.net/0hmhumL1/
function resizeInCanvas(img){
///////// 3-3 manipulate image
var perferedWidth = 2700;
var ratio = perferedWidth / img.width;
var canvas = $("<canvas>")[0];
canvas.width = img.width * ratio;
canvas.height = img.height * ratio;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0,0,canvas.width, canvas.height);
//////////4. export as dataUrl
return canvas.toDataURL();
}
作为 dataUrl 上传时,您将处理图像的大小(所需的带宽)增加约 20%,因此除非您大幅更改图像大小,否则您可能无法看到所需的节省。
相关文章:
- 用纯Javascript调整HTML5画布及其内容的大小
- JavaScript调整iFrame大小-适用于Firefox/IE,但不适用于Chrome
- Javascript调整所有图像的大小
- 使用Javascript调整图像大小,使其适合视口
- JavaScript 调整 iframe 的大小,但 iframe 中的元素具有相对大小
- 如何使用javascript调整此css对象
- 通过 JavaScript 调整 iFrame 内容的大小
- 使用 Javascript 调整字母大小
- WebView Android 和 JavaScript 调整大小
- 使用 Javascript 调整图像大小
- Javascript 调整背景图像的大小,但图像首先加载全尺寸 - 任何修复
- Javascript:调整base64图像的大小并以非异步方式返回字符串
- 使用 javascript 调整多个图像的大小
- 根据原始图像高度使用 Photoshop 和 JavaScript 调整条件图像大小
- JavaScript 调整函数输入变量
- 使用 javascript 调整网页的字体
- 将图像大小调整为使用 Javascript 调整窗口大小 - 在 Chrome 中不起作用
- 使用 JavaScript 调整图像大小
- 使用Google饼图(快速javascript调整)不断显示工具提示
- 使用Javascript调整绝对定位元素的大小