• Android图片处理


    1 读取图片


    2 Drawable和Bitmap之间的转换 

        2.1  Drawable >> Bitmap

        我们经常提到的Drawable只是一个抽象类,开发过程中我们是实际打交道的是它的派生类,例如BitmapDrawable(png图片)、GradientDrawable(xml图片)等。如果给定的drawable是BimapDrawable的实例,我们可以直接调用它的getBitmap方法,否则就创建一个bitmap,并把drawable绘制到bitmap上。

        public static final Bitmap drawableToBitmap(Drawable drawable) {
            if (drawable instanceof BitmapDrawable) {
                return ((BitmapDrawable) drawable).getBitmap();
            } else {
                //根据创建一个和drawable同尺寸的bitmap
                Bitmap bitmap = Bitmap.createBitmap(
                        drawable.getIntrinsicWidth(),
                        drawable.getIntrinsicHeight(),
                        //判断drawable的像素格式ARGB or RGB,即有没有透明度  如果没有透明度的话,选择RGB_565,节省了存储透明度的空间
                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
                //以bitmap为底板创建画布,draw在canvas上实际上就是draw在了bitmap上
                Canvas canvas = new Canvas(bitmap);
                //draw()实际上是根据drawable的bounds来确定绘制位置,所以要先设置bounds
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                //把drawable绘制在画布上
                drawable.draw(canvas);
                return bitmap;
            }
        }
    

        上面的代码涉及到了Bitmap.Config,关于它的详细介绍可以参考这篇文章:http://www.cnblogs.com/and_he/archive/2012/12/22/ARGB.html

        2.2 Bitmap >> Drawable

        通过BitmapDrawable即可将Bitmap转化为Drawable:

    public static final Drawable bitmapToDrawable(Bitmap bitmap){
        return new BitmapDrawable(bitmap);
    }
  • 相关阅读:
    Java基础50道经典练习题(23)——求岁数
    Java基础50道经典练习题(22)——递归求阶乘
    团队第一阶段冲刺04
    团队第一阶段冲刺03
    团队第一阶段冲刺02
    团队第一阶段冲刺01
    软件工作进度01
    软团队项目01之电梯演讲视频
    团队项目1
    C语言动静态链接库使用(笔记)
  • 原文地址:https://www.cnblogs.com/hsji/p/5114185.html
Copyright © 2020-2023  润新知