【发布时间】:2022-01-26 12:20:54
【问题描述】:
我知道有大量关于图像大小调整的帖子,我阅读了很多。我能够调整用户上传的图像的大小。但我真的不明白如何用这个新的和调整大小的图像发布表单。
我从this post实现了调整大小的方法,但我不明白将blob附加到formData的部分。
const input = this.$refs.input;
const file = input.files[0];
// Load the image
var reader = new FileReader();
reader.onload = function (readerEvent) {
var image = new Image();
image.onload = function (imageEvent) {
// Resize the image
var canvas = document.createElement('canvas');
const width = 200;
const height = 300;
canvas.width = width;
canvas.height = height;
canvas.getContext('2d').drawImage(image, 0, 0, width, height);
var dataUrl = canvas.toDataURL('image/jpeg');
var resizedImage = dataURLToBlob(dataUrl);
// I don't understand that part
// $.event.trigger({
// type: 'imageResized',
// blob: resizedImage,
// url: dataUrl,
// });
// I understand that an image input value can not be changed programatically
// const url = URL.createObjectURL(resizedImage);
// input.value = url;
};
image.src = readerEvent.target.result;
};
reader.readAsDataURL(file);
明确地说,这是一个 Rails 项目,表单(包括许多其他字段,而不仅仅是图像)是使用 simple_form 构建的。
我真的应该将文件输入放在表单之外吗?我应该拦截表单提交调用以手动构造formData,包括调整大小的图像吗?我应该在服务器端调整大小吗?
我的理解可能是错误的,所以我非常感谢任何帮助!
【问题讨论】:
标签: javascript ruby-on-rails image