1. 保存写入存储卡的权限html
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />android
测试过程当中发现5.0以前的版本在读取图片数据时还须要android.permission.READ_EXTERNAL_STORAGE权限。数据库
2. 视图上显示的图片和保存时所用的图片分开,保存所用为原图,而显示所用图片能够控制解析时的采样率决定大小。标准以显示时的清晰度(越大越清晰)和编辑处理时的速率(越小越快)为准。多线程
3. 图片显示视图要注意适配不一样大小的图片函数
(1) 视图大小是固定的viewWidth,viewHeight测试
(2) 图片以宽或高最大的一边不大于viewWidth或viewHeight进行缩放线程
4. 有些图片可能比较大,所以读取到内存的时候要注意outofmemoryerror,这一点能够参考BitmapFactory类相关一文中介绍的方法处理。若是保存时出现这样的问题,那么最终保存下来的图片相比于原图是有必定的采样损失的。这是考虑到内存的一种必要妥协,但出现这种状况时原图通常很大,这样的损失每每视觉上无碍。htm
5. 通常图片的方向为0,而全景照片是一种特殊类型的方向不为0的图片,为了保证内容的正确性须要进行方向处理,同时编辑有可能有旋转的操做,此时就更须要特殊处理。对象
6. 图片编辑完成保存时,除了Bitmap源以外,还须要copy原图的Exif文件和写入新的数据库文件,可能有变化的就是方向值,宽高值,尤为方向值结合第5点须要慎重对待。blog
7. 图片保存写入SD卡,须要判断存储盘是否挂载,是否有足够的存储空间。
8. Bitmap和Canvas函数中有关bitmap的一些操做是对Bitmap复制操做,产生了一个新的对象,这比较耗时,且此时要注意对再也不使用的bitmap进行recycle处理和置空。有些操做仍然是对原对象处理,此时要注意全部使用该Bitmap的地方都是操做后的bitmap。
9. 关于bitmap的操做是耗时操做,此时应考虑使用多线程处理,但要注意原线程绘制时Bitmap必定要准备完毕。