博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android图片处理
阅读量:5967 次
发布时间:2019-06-19

本文共 1547 字,大约阅读时间需要 5 分钟。

  相信做Android开发的小伙伴对于Android图片压缩、裁剪一定有很深的印象,今天我将带领大家一起学习一下这个看着高深莫测的知识,以便再以后的学习、工作中可以帮助到大家。

  首先我们看一下这个问题出现的原因,当我们需要在我们的应用中添加大量图片是,程序往往会报出OMM问题,这是什么问题呢?是当我们添加的照片过多或过大时,Android就会报出超内存错误,往往我们遇到这个问题都很无奈,进行图片缓存优化可以帮助我们解决这个问题,但是很多时候我们根本不知道,如何进行内存优化,很明显我就是这样的一位,这里我采用了压缩图片、裁剪图片的方式,减少图片占用的内存,从而使图片展示流畅。

  下面我们先看一下如何进行图片的裁剪:裁剪图片有两种方式,一种调用系统的裁剪方式,这种方式可以方便用户选择自己的裁剪区域,很多关于图片裁剪的视频,讲的就是这一种;第二种是通过后台函数直接进行裁剪,这种方式的好处在于,简化了用户的操作,方便快捷。对于第一种,大家可以百度一下,本篇我们一起来探讨一下如何通过后台函数实现对图片的自动裁剪。

File file = new File(fileString);//文件对象;fileString:文件的地址InputStream is = null;try {    is = new FileInputStream(file);//获得一个文件输入流对象} catch (FileNotFoundException e) {    e.printStackTrace();}BitmapFactory.Options options = new  BitmapFactory.Options();options.inJustDecodeBounds =  false;//这个参数一定要设置为false;如果将其设为true的话,在decode时将会返回null,通过此设置可以去查询一个bitmap的属性,比如bitmap的长与宽,而不占用内存大小double n = file.length()/1024.0;//获得文件的大小if(n<200){    options.inSampleSize = 2;//width,hight设为原来的二分一}else{    options.inSampleSize = 3;//width,hight设为原来的三分一}        Bitmap bitmap =  BitmapFactory.decodeStream(is, null,  options);

  BitmapFactory.decodeStream(is, null, options);根据上面我们设置压缩比,对图片进行压缩处理。

  下面我们一起来谈谈如何进行图片的裁剪,这里我介绍的是自定义裁剪,通过我们设置裁剪起点和裁剪长宽值实现对图片的裁剪。这里我将以实现一个根据图片的长宽,取最短边为边居中裁剪。

int w = options.outWidth;//得到图片的宽int h = options.outHeight;//得到图片的高int wh = w > h ? h : w;// 裁切后所取的正方形区域边长int retX = w > h ? (w - h) / 2 : 0;//基于原图,取正方形左上角x坐标int retY = w > h ? 0 : (h - w) / 2;//基于原图,取正方形左上角y坐标        Bitmap.createBitmap(bitmap, retX, retY, wh, wh, null, false);

  好了关于图片的压缩与裁剪就为大家介绍完了,希望对大家有一些帮助吧。

转载地址:http://swqax.baihongyu.com/

你可能感兴趣的文章
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs
查看>>
我的友情链接
查看>>
批量删除用户--Shell脚本
查看>>
Eclipse Java @Override 报错
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>
Atom 编辑器系列视频课程
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
使用dotenv管理环境变量
查看>>
温故js系列(11)-BOM
查看>>
Vuex学习
查看>>
bootstrap - navbar
查看>>