(3)android 图片编辑要注意的点

1. 保存写入存储卡的权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />

测试过程中发现5.0之前的版本在读取图片数据时还需要android.permission.READ_EXTERNAL_STORAGE权限。

 

2. 视图上显示的图片和保存时所用的图片分开,保存所用为原图,而显示所用图片可以控制解析时的采样率决定大小。标准以显示时的清晰度(越大越清晰)和编辑处理时的速率(越小越快)为准。

 

3. 图片显示视图要注意适配不同大小的图片

(1) 视图大小是固定的viewWidth,viewHeight

(2) 图片以宽或高最大的一边不大于viewWidth或viewHeight进行缩放

 

4. 有些图片可能比较大,因此读取到内存的时候要注意outofmemoryerror,这一点可以参考BitmapFactory类相关一文中介绍的方法处理。如果保存时出现这样的问题,那么最终保存下来的图片相比于原图是有一定的采样损失的。这是考虑到内存的一种必要妥协,但出现这种情况时原图一般很大,这样的损失往往视觉上无碍。

 

5. 一般图片的方向为0,而全景照片是一种特殊类型的方向不为0的图片,为了保证内容的正确性需要进行方向处理,同时编辑有可能有旋转的操作,此时就更需要特殊处理。

 

6. 图片编辑完成保存时,除了Bitmap源之外,还需要copy原图的Exif文件和写入新的数据库文件,可能有变化的就是方向值,宽高值,尤其方向值结合第5点需要慎重对待。

 

7. 图片保存写入SD卡,需要判断存储盘是否挂载,是否有足够的存储空间。

 

8. Bitmap和Canvas函数中有关bitmap的一些操作是对Bitmap复制操作,产生了一个新的对象,这比较耗时,且此时要注意对不再使用的bitmap进行recycle处理和置空。有些操作仍然是对原对象处理,此时要注意所有使用该Bitmap的地方都是操作后的bitmap。

 

9. 关于bitmap的操作是耗时操作,此时应考虑使用多线程处理,但要注意原线程绘制时Bitmap一定要准备完毕。

 

posted on 2015-06-27 10:17  Matrixin  阅读(467)  评论(0编辑  收藏  举报

导航