zoukankan      html  css  js  c++  java
  • Bitmap与Byte、Drawable之间的转换

    1)Bitmap 转化为 byte

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);

    byte[] array= out.toByteArray();
    2)byte转化为bitmap

    final ContentResolver contentResolver = context.getContentResolver();

    final PackageManager manager = context.getPackageManager();

    final Cursor c = contentResolver.query(uri, null, null, null, null);

    final int icon3DIndex = c.getColumnIndexOrThrow(ColumnName);

    byte[] data = c.getBlob(icon3DIndex);

    Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
    3)bitmap 转换 drawable
    Bitmap bitmap = new Bitmap(...);

    Drawable drawable = new BitmapDrawable(bitmap);
    //Drawable drawable = new FastBitmapDrawable(bitmap);
    4)Drawable to Bitmap
    a. BitmapDrawable, FastBitmapDrawable直接用getBitmap

    b. 其他类型的Drawable用Canvas画到一个bitmap上

    Canvas canvas = new Canvas(bitmap) drawable.draw(canvas);
    Drawable d = ImagesList.get(0);

    Bitmap bitmap =  ((BitmapDrawable)d).getBitmap();

    android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下,以便于以后随时可用

    1、drawable---->bitmap

    View Code
    复制代码
     1 public static Bitmap drawableToBitmap(Drawable drawable) {             
     2        Bitmap bitmap = Bitmap   
     3                        .createBitmap(   
     4                                       drawable.getIntrinsicWidth(),   
     5                                        drawable.getIntrinsicHeight(),   
     6                                       drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   
     7                                                       : Bitmap.Config.RGB_565);           Canvas canvas = new Canvas(bitmap);   
     8        //canvas.setBitmap(bitmap);   
     9        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());   
    10         drawable.draw(canvas);   
    11        return bitmap;   
    12 }  
    复制代码

    2、从资源中获取Bitmap:drawable---->bitmap

    View Code
    1 Resources res=getResources();     
    2 Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);  
    3 //或者这种方法也行,这两种方法都一样
    4 Bitmap bmp = ((BitmapDrawable)this.getResources.getDrawable(R.drawable.pic)).getBitmap();

    3、bitmap---->drawable

    View Code
    复制代码
    1 /** 
    2     * Bitmap转化为drawable 
    3     * @param bitmap 
    4     * @return 
    5     */  
    6     public static Drawable bitmap2Drawable(Bitmap bitmap){  
    7         return new BitmapDrawable(bitmap) ;  
    8     }  
    复制代码

    4、bitmap---->byte[]

    View Code
    1 private byte[] Bitmap2Bytes(Bitmap bm){   
    2     ByteArrayOutputStream baos = new ByteArrayOutputStream();     
    3     bm.compress(Bitmap.CompressFormat.PNG, 100, baos);     
    4     return baos.toByteArray();   
    5    }  

    5、byte[]---->bitmap

    View Code
    复制代码
    1 private Bitmap Bytes2Bimap(byte[] b){   
    2             if(b.length!=0){   
    3                 return BitmapFactory.decodeByteArray(b, 0, b.length);   
    4             }   
    5             else {   
    6                 return null;   
    7             }   
    8      }  
    复制代码
  • 相关阅读:
    对于Spring中AOP,DI,IoC概念的理解
    Java多线程(2)线程锁
    JVM中ClassLoader的学习
    用心对待博客,用脚对待cv
    硬核关闭wps for linux的自动备份功能
    [翻译]官网文档,ubuntu使用vscode调试c++
    一文快速入门Shell脚本_了解Shell脚本基本命令
    Ubuntu安装旧版本/指定版本的JDK
    ubuntu1204搭建Andriod4.0环境时了解的相关扩展信息
    避免火狐浏览器产生巨大的磁盘写入量及一些小优化
  • 原文地址:https://www.cnblogs.com/crazywenza/p/2785663.html
Copyright © 2011-2022 走看看