Android图片处理
2016-02-17 12:57
459 查看
图片处理
加载大图片用到的类:BitmapRegionDecoder 1.传入图片:BitmapRegionDecoder.newInstance(inputStream,false) 2.指定显示的区域: bitmapRegionDecoder.decodeRegion(rect,options); 注意: 第一个参数指定显示的区域,第二个参数可以用BitmapFactory.Options 的inSampleSize,inPreferredConfig等。 加载大图的思路: 1.提供一个设置图片的入口。 2.重写onTouchEvent,在里面根据用户移动的手势,去跟更新显示区域的参数 3.每次更新区域参数后,调用invalidate,onDraw里面去regionDecoder.decodeRegion拿到bitmap,去draw;
图片虚化
图片渲染在Android API17 也就是android4.2以上要用RenderScript, 低于4.2的可以使用Java的原生代码但是效率会低不少
图片加载时候的扫描路径心得:
在扫描图片的时候,使用了一个临时的hashSet保存扫描过的文件夹,这样可以有效的避免重复扫描。比如,我们手机中有个文件夹下面有3000多张图片,如果不判断则会扫描这个文件夹3000多次,处理器时间及内存的消耗还是很客观的。 在适配器中,保存List<String>的时候,考虑只保存图片的名称,路劲单独作为变量传入。一般情况下,图片的路径比图片名长很多,假如有3000张图片,路径长度为30,图片平均长度为10,则list<String>保存完整路径需要长度为:(30+10)*3000=1200000;而单独储存只需要:30+10*3000=30030;图片越多,节省内存越可观。
图片lruCache使用:
算法原理:把最近使用的对象用强引用存储在LinkedHashMap中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。 当向ImageView中加载一张图片时,首先会在LruCache的缓存中进行检查。如果找到了相应的键值,则会立刻更新ImageView,否则开启一个后台线程来加载这张图片。
diskLruCache用法:
1.DiskLruCache获取: DiskLruCache.open(directory,appVersion,valueCount,maxSize); 2.存储的一般使用: String key=generateKey(url); DiskLruCache.Editor editor = mDiskLruCache.edit(key); OutputStream os = editor.newOutputStream(0); 3.提交:editor.commit(); 4.取出: DiskLruCache.Snapshot snapShot=mDiskLruCache.get(key); if(snapShot != null){ InputStream is = snapShot.getInputStream(0); } 注意:因为每个实体都是文件,所以返回的in或is是个FileInutStream或FileOutputStream
手势旋转图片
关键方法: matrix.postRotate(rotate,mid.x,mid.y)//旋转 double radians =Math.atan2(delta_y,delta_x);//计算弧度 Math.toDegress(radians);//计算旋转角度
图片裁剪
裁剪主要方法:BitMap.createBitmap(Bitmap source,int x,int y,int width,int height) @param source 原图 @param x 起始点坐标 @param y 起始坐标点 @param width 每一行的像素点数 @param height 行数
给图片添加云标签
在onTouch(motionEvent event)方法里面获得当前移手移动的距离,然后设置TagView的margin值
图片滤镜处理:
参考博客
android-gpuimage,采用将YUV数据在NDK层转化为RGB数据,由 OpenGL渲染到屏幕中,滤镜算法由Shader实现。
相关文章推荐
- Android牛逼开源项目分类汇总
- Android中TextView添加删除线
- Android FoldingLayout 折叠布局 原理及实现(二)
- Android AIDL实现远程服务
- Android FoldingLayout 折叠布局 原理及实现(一)
- 获取手机电量百分比
- 安卓开发 无线调试
- Android 绘制圆形图片
- Android 获取验证码后 在Button控件上 显示倒计时
- android textView添加不同颜色的边框
- Android安全-其他安全2-常见漏洞
- android adt官网下载地址
- android TextView的setTextSize与getTextSize的中存在的一个陷阱
- Android安全-其他安全1-组件安全
- Android命名规则
- 如何自定义android chooser 应用选择器
- android 项目中log信息的正确处理
- android studio 安装时错误:unable to run maksdcard sdk tools
- Android安全-数据安全3-通信安全
- Android开发必看-快速提高 Android 开发效率的 Web 工具