在移动端怎样上传图片?,而且在上传前把图片压缩一定的大小?
回复内容:
在移动端怎样上传图片?,而且在上传前把图片压缩一定的大小?
对于异步上传来说,如果仍想用文件直接上传方法的话,可以采用HTML5的
FormData
,具体操作可以参考这篇博客。http://www.cnblogs.com/lhb25/...本人还有另外一种异步上传图片的方法。先将图片转换成base64字符串,然后再把base64字符串提交到服务器上,服务器接收后,可以再用具体的API将base64字符串转换成图片内容。以下为具体实现方法:
<code>var getObjectURL = function(file) { var url = null; if (window.createObjectURL !== undefined) { // basic url = window.createObjectURL(file); } else if (window.URL !== undefined) { // mozilla(firefox) url = window.URL.createObjectURL(file); } else if (window.webkitURL !== undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(file); } return url; }</code>
getObjectURL
方法用于将传入的input中的图片file对象,转换成一个临时的url,而这个url是同域的。
<code>var converImgTobase64 = function(url, callback, outputFormat) { var canvas = document.createElement('CANVAS'), ctx = canvas.getContext('2d'), img = new Image; img.crossOrigin = 'Anonymous'; img.onload = function(){ canvas.height = img.height; canvas.width = img.width; ctx.drawImage(img,0,0); var dataURL = canvas.toDataURL(outputFormat || 'image/png'); callback.call(this, dataURL); canvas = null; }; img.src = url; }</code>
converImgTobase64
方法就是将上面所得到的url传入,通过canvasAPI转换成base64字符串,注意这个url必须是同域的,不可跨域,所以getObjectURL
这个方法是很有必要的。
例子:
<code>var input = $("input[type=file]")[0], src = getObjectURL(input.files[0]); converImgTobase64(src, function(base64Str) { //处理base64Str相关的callback,可以直接在这里发送ajax请求。 }); </code>
这部分组件的代码在本人的一个util库中,欢迎参考并提出整改意见~~~https://github.com/zero-mo/Br...
另外,图片压缩的话,这里有一个是基于canvas
进行操作的,你可以试一下。
http://www.cnblogs.com/xiao-y...
以下引用我之前的回答
如果不考虑兼容
IE
可以用FileReader API
读取文件 获得文件的Base64
值img
标签 可以直接用Base64
展示图片
之后可以用一些插件剪裁图片后上传服务器保存
FileReader API 参考文档:
https://developer.mozilla.org...jQuery 剪裁图片插件(支持移动端):
http://www.jq22.com/jquery-in...
至于压缩的话,剪裁之后的图片大小自然比原图小很多
原问题地址:https://segmentfault.com/q/10...
刚写的文章:
https://segmentfault.com/a/11...
主要是用原生的HTML5文件表单选择,然后用插件压缩,最后直接用插件输出的FormData上传。

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

禅工作室 13.0.1
功能强大的PHP集成开发环境