Android中图片资源格式的转换
来源:互联网 发布:算法第四版中文电子书 编辑:程序博客网 时间:2024/06/08 07:19
在Android中图片资源有很多种格式,比如Drawable,图片的资源ID,Bitmap,还有从文件中加载进来的原始形式字节形式,那这几种格式的图片怎样相互转换来用于不同的场景呢?之后还要说一种简单压缩图片的方法。
一.Drawable转化为Bitmap
如果Drawable的对象为BitmapDrawable或FastBitmapDrawable的类型,则直接使用getBitmap()就可以了
如果是其他类型的Drawable的对象则可以用Canvas画到一个Bitmap上
Canvas canvas = new Canvas(bitmap) drawable.draw(canvas)
二.资源ID转化为Drawable
Drawable drawable = activity.getResources().getDrawable(R.drawable.icon);
三.资源ID转化Bitmap
Bitmap bitmap = BitmapFactory. decodeResource (Resources res, int id)
四.Bitmap转化为Drawable
Drawable drawable = new FastBitmapDrawable(bitmap);
五.Bitmap转化为字节形式
ByteArrayOutputStream out = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);byte[] array= out.toByteArray();
六.通过字节形式构建Bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
最后说一种简单的图片压缩方法(对OOM有点用处的)
<span style="font-size:18px;">public Bitmap getBitmap(String path, Context context) {// 图片宽高都为原来的二分之一,即图片为原来的四分之一if (path.length() < 7) {return null;}String str = path.substring(0, 7);// 代表了一个内部地址content打头if ("content".equals(str)) {try {BitmapFactory.Options options = new BitmapFactory.Options();//不加载到内存当中、、options.inJustDecodeBounds = true;BitmapFactory.decodeStream(context.getContentResolver() //在res/drawable中.openInputStream(Uri.parse(path)), null, options);int height = options.outHeight;if (options.outWidth > 100) {// 根据宽设置缩放比例options.inSampleSize = options.outWidth / 100 + 1 + 1;options.outWidth = 100;// 计算缩放后的高度height = options.outHeight / options.inSampleSize;options.outHeight = height;}options.inJustDecodeBounds = false;options.inPurgeable = true;options.inInputShareable = true;return BitmapFactory.decodeStream(context.getContentResolver().openInputStream(Uri.parse(path)), null, options);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}} else {// 外部地址BitmapFactory.Options options = new BitmapFactory.Options(); //在外存中// options.inSampleSize = 8;options.inJustDecodeBounds = true;BitmapFactory.decodeFile(path, options);int height = options.outHeight;if (options.outWidth > 100) {// 根据宽设置缩放比例options.inSampleSize = options.outWidth / 100 + 1 + 1;options.outWidth = 100;// 计算缩放后的高度height = options.outHeight / options.inSampleSize;options.outHeight = height;}options.inJustDecodeBounds = false;options.inPurgeable = true;options.inInputShareable = true;return BitmapFactory.decodeFile(path, options);// public static Bitmap decodeFile(String filepath,final int// REQUIRED_SIZE){//}return null;}</span>
0 0
- Android中图片资源格式的转换
- 探讨android图片资源的抖动处理和格式转换
- 探讨android图片资源的抖动处理和格式转换
- Android 中图片的格式
- Android图片资源转换代码
- 提取android apk文件中的dat格式的图片资源
- Android中图片的处理(放大缩小,去色,转换格式,增加水印等)
- Android中图片的处理(放大缩小,去色,转换格式,增加水印等)函数
- Android中图片的处理(放大缩小,去色,转换格式,增加水印等)
- Android中内置的图片资源
- Android中内置的图片资源
- Android 中定义图片的资源文件
- android中图片png格式和jpg格式的使用
- 图片转换格式的代码
- android xml 资源文件中几个格式(@ ? @* @+)的含义
- 资源国际化之格式的转换
- android string.xml中格式资源字符串
- Android中.9.png格式的图片的制作
- Xcode里一个工程(Project)多个项目(target)做版本控制讨论
- 1.跨浏览器通讯之iframe 以及window.open
- 华为oj 将真分数分解为埃及分数
- hdoj-5636===dfs枚举新增的路有木有走
- Java的集合详细总结
- Android中图片资源格式的转换
- CodeForces - 617B Chocolate (规律)
- 关于socket buffer size的调优
- java中的局部变量与成员变量
- 挑7
- RILC系统结构及LibRIL运行机制
- Exception 和 error
- 关于LINUX网络编程中的IO 操作
- 用栈实现将十进制数转换为任意进制数(2,8,16...).