最近做项目需要用到拍照和选择相册照片,并显示出来imageview 上,然后压缩上传到服务器中,这本是一个非常常见的功能,但对于图片的处理确实一个技术活,稍微不注意会出现oom,图片压缩也要处理的刚刚好,不能浪费用户的流量,也不能过分的压缩使图片失真,这真的不简单,好在开源中国的安卓端app以开源,本人特意从开源中国整理了这个demo,分享给大家。
进入相册选择照片:注意6.0之后要申请运行时权限,即api23。
1 | Intent intent; |
或者拍照:
1 | private void toCamera() { |
在onActivity获取图片信息:
1 | @Override |
通过返回的uri获取图片路径
1 | /** |
根据图片地址去获取bitmap这时需要自己传入图片的大小即高度和宽度,根据自己的需求去传。
1 | Bitmap bitmap = BitmapCreate.bitmapFromStream(new FileInputStream(path), 512, 512); |
图片压缩
1 |
|
将压缩后的bitmap存在sdcard中,待会儿要上传到服务器中。
1 | /** |
将压缩后的bitmap 根据需求进一步缩放,显示在imageview上。
1 | /** |
在拍照的过程中,有的机型照片会倒转,这是需要处理一下即可
1 | /** |
这些代码百分之七八十来自开源中国。感谢原作者。