调用android系统的图片裁剪方式问题和解决方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用android系统的图片裁剪方式问题和解决方式相关的知识,希望对你有一定的参考价值。

参考技术A 调用android系统的图片裁剪方式问题和解决方式:

如果你的程序中使用的图片裁剪方式是这样子的话:

1、调用系统自带的图片裁剪页面,吧图片保存在inetnt中;

2、裁剪完毕通过intentData取出图片

如果使用这种方式,就会遇到一个问题:

在某些手机(本人遇到的情况是小米3)上面无法跳转到系统的图片裁剪页面,或者IntentData是null。

这种方式是把图片放在intent中传递,而intent在安卓中的定义是传递轻量级的数据,显然传递图片是不合适的,高性能的手机可能没问题,性能差点的手机就会出问题了。、

解决方式:

1、用intent传递图片的Uri:

private staticUrimUriFile;

2、裁剪完毕通过Uri取出图片:

这里要注意取图片的方式,小心oom。把规避oom的方式也贴出来:

图片拍照上传解决方案

参考技术A

微信内置浏览器,和一些主流浏览器支持调用摄像头,但也有很多不支持调用摄像头,仅支持相册。
如果是WebView中,就需要客户端支持了,android和ios的权限也是问题。

formData 简介

简单的说就是:通过formData,我们可以用ajax方式来发送表单数据;以前上传图片是需要用form表单提交的。

我们知道浏览器默认显示的文件上传按钮是很丑的,通常UI都会对上传按钮进行设计。有以下几种方案来写样式。

弊端:

通过ref获取上传按钮。

ref方式

event.target方式

坑:

FileReader 简介

通过 readAsDataURL() ,在读取操作完成后,result属性中将包含一个data:URL格式的字符串以表示所读取文件的内容。

base64字符串

兼容性

我在safari中测试,发现是支持的。

URL.createObjectURL 简介

通过URL.createObjectURL()创建一个URL对象,这个URL对象表示指定的file对象或Blob对象。

兼容性

张鑫旭的文章: HTML5 file API加canvas实现图片前端JS压缩并上传

张鑫旭的文章: 理解DOMString、Document、FormData、Blob、File、ArrayBuffer数据类型

使用Camera API
张鑫旭

以上是关于调用android系统的图片裁剪方式问题和解决方式的主要内容,如果未能解决你的问题,请参考以下文章

使用Android系统自带裁剪功能,小图可能出现黑框的解决办法

android 怎么裁剪drawable

hbuilder mui调用系统裁剪图片头像裁剪-Android

调用 android 系统拍照结合 android-crop 裁剪图片

androidtheme添加图片

调用 android 自身裁剪功能