Android图片二进制与Bitmap、Drawable之间的转换
Android图片二进制与Bitmap、Drawable之间的转换
Java代码  
public byte[]
getBitmapByte(Bitmap bitmap){   
   ByteArrayOutputStream out
= new ByteArrayOutputStream();   
 
 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);   
 
 try {   
       out.flush();   
 
     out.close();   
   } catch (IOException e)
{   
       e.printStackTrace();   
 
 }   
   return out.toByteArray();   
}
public Bitmap getBitmapFromByte(byte[] temp){   
 
 if(temp != null){   
       Bitmap bitmap =
BitmapFactory.decodeByteArray(temp, 0, temp.length);   
   
   return bitmap;   
   }else{   
 
     return null;   
   }   
}
public byte[] getBitmapByte(Bitmap
bitmap){
ByteArrayOutputStream out = new
ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100,
out);
try {
out.flush();
out.close();
} catch (IOException e)
{
e.printStackTrace();
}
return out.toByteArray();
}
public
Bitmap getBitmapFromByte(byte[] temp){
if(temp != null){
Bitmap bitmap =
BitmapFactory.decodeByteArray(temp, 0, temp.length);
return
bitmap;
}else{
return null;
}
}
Java代码  
public
static Bitmap drawableToBitmap(Drawable drawable){     
 
         int width = drawable.getIntrinsicWidth();
    
           int height =
drawable.getIntrinsicHeight();     
       
   Bitmap bitmap = Bitmap.createBitmap(width, height,    
                 
 drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
    
                 
         : Bitmap.Config.RGB_565);    
           Canvas canvas = new Canvas(bitmap);
    
         
 drawable.setBounds(0,0,width,height);     
   
       drawable.draw(canvas);     
 
         return bitmap;     
   
   }
public static Bitmap
drawableToBitmap(Drawable drawable){  
       
   int width = drawable.getIntrinsicWidth();  
   
       int height = drawable.getIntrinsicHeight();
 
           Bitmap bitmap =
Bitmap.createBitmap(width, height,  
         
         drawable.getOpacity() != PixelFormat.OPAQUE ?
Bitmap.Config.ARGB_8888  
           
               : Bitmap.Config.RGB_565);
 
           Canvas canvas = new
Canvas(bitmap);  
         
 drawable.setBounds(0,0,width,height);  
     
     drawable.draw(canvas);  
       
   return bitmap;  
       }
Java代码  
Drawable drawable = new FastBitmapDrawable(bitmap);
Android图片二进制与Bitmap、Drawable之间的转换的更多相关文章
- Android图片缓存之Bitmap详解
		前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ... 
- 【转】Android中dip(dp)与px之间单位转换
		Android中dip(dp)与px之间单位转换 dp这个单位可能对web开发的人比较陌生,因为一般都是使用px(像素)但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因 ... 
- Android图片缓存之Bitmap详解(一)
		前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. Bitmap: Bitmap是Android ... 
- Android 图片文件和Bitmap之间的转换
		String filePath="c:/01.jpg"; Bitmap bitmap=BitmapFactory.decodeFile(filePath); 如果图片过大,可能导致 ... 
- Android笔记之dp与px之间的转换以及LayoutParams
		dp与px之间的转换公式 px = dp * (dpi / 160) dp = px / (dpi / 160) 其中dpi的获取方式如下 private void getDpi() { Displa ... 
- byte、二进制、十进制数值之间的转换
		项目中遇到将字节数据文件解析成可展示的十进制,经过调查和测试得出下面的转换方法 1.将byte值转换为二进制字符串: byte byteValue = -1; // 将byte转换为8位二进制字符串 ... 
- Android图片缓存之Lru算法
		前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ... 
- Android图片缓存之Glide进阶
		前言: 前面学习了Glide的简单使用(Android图片缓存之初识Glide),今天来学习一下Glide稍微复杂一点的使用. 图片缓存相关博客地址: Android图片缓存之Bitmap详解 And ... 
- Android图片缓存之初识Glide
		前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ... 
随机推荐
- [nginx]盗链和防盗链场景模拟实现
			盗链环境模拟 http://www.daolian.com/index.html 这个页面盗用http://www.maotai.com/qq.jpg这个站点页面的图. <!doctype ht ... 
- Chrome浏览器查看 iframe信息 OpenFrame
			https://chrome.google.com/webstore/search/openframe?hl=zh-CN&_category=extensions 搜索 OpenFrame 添 ... 
- [AWS vs Azure] 云计算里AWS和Azure的探究(3)
			云计算里AWS和Azure的探究(3) ——Amazon EC2 和 Windows Azure Virtual Machine 今天我来比较一下AWS EC2和Azure VM的具体流程上的异同.以 ... 
- sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类
			sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类 详述 使用sbt对写的Spark程序打包,过程中没有问题 spark-submit提交jar包运行提示找不到对应的类 解 ... 
- 2015-06学习总结——c++
			在工作快三年的时候,突然想到我需要凝练下自身的知识体系.从大一开始接触c++,差不多快8年了.想想过去走过的学习之路,很简单,也很曲折. 经历了从一无所知——入门——应用——修修补补的过程,到现在可以 ... 
- Ubuntu下golang环境搭建
			参考官方文档:https://golang.org/doc/editors.html 1.安装golang apt install golang 2.配置GOPATH mkdir ~/gopath v ... 
- eth0 eth0:1 eth0.1 的区别
			eth0 eth0:1 和eth0.1三者的关系对应于物理网卡.子网卡.虚拟VLAN网卡的关系:物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡 ... 
- hdu1598
			思路:对所有路径的速度从小到大排个序,然后枚举高度差就ok...... #include<iostream> #include<cstdio> #include<cstr ... 
- Ubuntu 14.04快速搭建SVN服务器及日常使用
			1.介绍 Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可以很方面恢复到以前的版本,并可以查看数据更改 ... 
- 1. AutoEncoder介绍
			1. AutoEncoder介绍 2. Applications of AutoEncoder in NLP 3. Recursive Autoencoder(递归自动编码器) 4. Stacked ... 
