【发布时间】:2017-07-22 19:56:40
【问题描述】:
我目前正在使用bootstrap-wysiwyg 富文本编辑器。这允许用户将图像文件拖到编辑器中,这很棒,但是我想动态调整此图像的大小。我相信我已经在 bootstrap-wysiwyg.js 中找到了我应该尝试调整图像大小的位置,然后它才会显示在编辑器中,然后在用户单击提交时发布到 PHP 页面。
通过阅读其他 stackoverflow 帖子,似乎首选的方法是使用 HTML5 的画布功能。我也有可用的 jQuery。该解决方案必须支持的唯一浏览器是当前版本的 Chrome 或 Firefox。
我相信我已经为这个调整大小功能找到了一个很好的切入点:
function (files) {
editor.focus();
$.each(files, function (idx, fileInfo) {
if (/^image\//.test(fileInfo.type)) {
// ENTRYPOINT: attempt to resize
$.when(readFileIntoDataUrl(fileInfo)).done(function (dataUrl) {
execCommand('insertimage', dataUrl);
editor.trigger('image-inserted');
}).fail(function (e) {
options.fileUploadError("file-reader", e);
});
} else {
options.fileUploadError("unsupported-file-type", fileInfo.type);
}
});
},
上面的代码预先存在于 bootstrap-wysiwg 库中。我在想我可以以某种方式获取 fileInfo 对象,将其转换为 Image 对象,调整大小,生成图像的 dataurl 版本,然后调用:
execCommand('insertimage', dataUrl);
editor.trigger('image-inserted');
我觉得这将消除对当前包含这两个函数调用的 $.when 函数的需要。
我尝试过集成 StackExchange 中的其他示例,this one 尤其有前途,但我对 JS 的理解还不够好,无法正确地适应我的需求。
我意识到我可以在 POST/上传后调整图像服务器端的大小,但这并不可取,因为目标是自动调整拖入编辑器窗口的非常大的图像的大小,使其更易于管理正在使用编辑器窗口并且没有在所有方向上填满整个编辑器窗口的最终用户。
生成图像的质量并不是那么重要,所以我不关心那些类型的优化以及其他地方已经提到的那些。
【问题讨论】:
标签: javascript jquery html5-canvas