zoukankan      html  css  js  c++  java
  • 将view对象转化为Bitmap

    经亲自测试,确实可行

    转:http://blog.csdn.net/hexingzhi/article/details/7598567 

    一、Bitmap转Drawable 
    
    
    Bitmap bm=xxx; //xxx根据你的情况获取 
    
    BitmapDrawable bd=new BitmapDrawable(bm); 
    因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。 
    
    二、 Drawable转Bitmap 
    
    转成Bitmap对象后,可以将Drawable对象通过Android的SK库存成一个字节输出流,最终还可以保存成为jpg和png的文件。 
    Drawable d=xxx; //xxx根据自己的情况获取drawable 
    
    BitmapDrawable bd = (BitmapDrawable) d; 
    
    Bitmap bm = bd.getBitmap(); 
    最终bm就是我们需要的Bitmap对象了。 
    
    
    
    // 从资源中获取Bitmap 
    public static Bitmap getBitmapFromResources(Activity act, int resId) { 
    Resources res = act.getResources(); 
    return BitmapFactory.decodeResource(res, resId); 
    } 
    
    // byte[] → Bitmap 
    public static Bitmap convertBytes2Bimap(byte[] b) { 
    if (b.length == 0) { 
    return null; 
    } 
    return BitmapFactory.decodeByteArray(b, 0, b.length); 
    } 
    
    // Bitmap → byte[] 
    public static byte[] convertBitmap2Bytes(Bitmap bm) { 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bm.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    return baos.toByteArray(); 
    } 
    
    // 1)Drawable → Bitmap 
    public static Bitmap convertDrawable2BitmapByCanvas(Drawable drawable) { 
    Bitmap bitmap = Bitmap 
    .createBitmap( 
    drawable.getIntrinsicWidth(), 
    drawable.getIntrinsicHeight(), 
    drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 
    : Bitmap.Config.RGB_565); 
    Canvas canvas = new Canvas(bitmap); 
    // canvas.setBitmap(bitmap); 
    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), 
    drawable.getIntrinsicHeight()); 
    drawable.draw(canvas); 
    return bitmap; 
    } 
    
    // 2)Drawable → Bitmap 
    public static Bitmap convertDrawable2BitmapSimple(Drawable drawable){ 
    BitmapDrawable bd = (BitmapDrawable) drawable; 
    return bd.getBitmap(); 
    } 
    
    // Bitmap → Drawable 
    public static Drawable convertBitmap2Drawable(Bitmap bitmap) { 
    BitmapDrawable bd = new BitmapDrawable(bitmap); 
    // 因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。 
    return bd; 
    }
            private Bitmap getViewBitmap(View view) {

    view.clearFocus();
            view.setPressed(false);

            boolean willNotCache = view.willNotCacheDrawing();
            view.setWillNotCacheDrawing(false);

            int color = view.getDrawingCacheBackgroundColor();
            view.setDrawingCacheBackgroundColor(0);

            if (color != 0) {
                view.destroyDrawingCache();
            }
            view.buildDrawingCache();
            Bitmap cacheBitmap = view.getDrawingCache();
            if (cacheBitmap == null) {
                return null;
            }

            Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);

            view.destroyDrawingCache();
            view.setWillNotCacheDrawing(willNotCache);
            view.setDrawingCacheBackgroundColor(color);

            return bitmap;
        }

  • 相关阅读:
    华为机试题 二叉查搜索树 判断两序列是否为同一二叉搜索树序列
    华为机试题 火车进站
    Linux命令学习 rmdir
    Linux命令学习 rm
    Linux命令学习 mkdir
    Linux命令学习 du
    Linux命令学习 pwd
    Linux命令学习 ls
    Linux命令学习 cd
    伪代码编程过程
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/2728738.html
Copyright © 2011-2022 走看看