zoukankan      html  css  js  c++  java
  • Android中文API(136) —— Bitmap


    Admin
    2011年11月21日

    媒介

      本章内容android.graphics.Bitmap章节,译为"位图",版本为Android 4.0 r1,翻译来自:"StreamH",迎接接见他的博客:"http://blog.csdn.net/qs_csu",再次感激"StreamH" !等待你一路参与翻译Android的相干材料,接洽我over140@gmail.com。

    声明

      迎接转载,但请保存文章原始出处:) 

        博客园:http://www.cnblogs.com/

        Android中文翻译组:http://androidbox.sinaapp.com/

     

    Bitmap

    译者签名:StreamH

    译者链接:http://blog.csdn.net/qs_csu

    版本:Android 4.0 r1

     

    布局

    持续关系

    public class Bitmap extends Object implements Parcelable

            

    java.lang.Object

    android.graphics.Bitmap

     

    内部类

      enum Bitmap.CompressFormat

      具体申明位图的紧缩格局

      enum Bitmap.Config

      位图的布局

     

    常量

    Int  DENSITY_NONE

    标记住该位图是以未知的像素密度创建的

    拜见

               getDensity()

    setDensity(int)

    公共办法

    boolean compressBitmap.CompressFormat format, int quality, OutputStream stream)

    把位图的紧缩信息写入到一个指定的输出流中。若是返回true,可以经由过程传递一个响应的输出流到BitmapFactory.decodeStream()来重构该位图。重视:并非所有的格局都直接支撑位图布局,所以经由过程BitmapFactory返回的位图很可能有不合的位深度,或许会丧失每个象素的alpha例如,JPEG 只支撑不透明像素

    (译者注:色深(color depth),也称色位深度bitdePth),是指在必然辨别率下一个像素可以或许接管的色彩数量局限。凡是色深用2n次方来默示。例如,8 bit的色深包含28次方)

    参数

                                format  图像的紧缩格局;

                                quality 图像紧缩比的值,0-100 0 意味着小尺寸紧缩,100意味着高质量紧缩。对于有些格局,比如无损紧缩的PNG,它就会忽视quality这个参数设置。

                                stream  写入紧缩数据的输出流

        返回值

    若是成功地把紧缩数据写入输出流,则返回true

    public Bitmap copy (Bitmap.Config config, boolean isMutable)

    按照该位图的大小产生一个新位图,按照指定的布局设置新位图的布局,然后把位图的像素拷贝到新位图中。若是不支撑该转换,或者分派内存失败,那就返回NULL。返回的位图和原图有同样的像素密度。

    参数

                  config     成果图预期的布局;

                 isMutable   若是是true,那么产生的图片是可变的。比如,它的像素能被批改

        返回值

    新的位图。若是拷贝操纵不克不及履行,则返回NULL

    public void copyPixelsFromBuffer (Buffer src)

    从缓存器中拷贝像素值,从当前索引开端,覆盖位图中对应的像素值。在缓存器中的数据不会被改变不像setPixels(),会把32位去预存像素转换为该位图的格局

    public void copyPixelsToBuffer (Buffer dst)

    把该位图的像素值拷贝到指定的缓存器中调用者分派的缓存器。若是缓存区不敷大而无法放置所有的像素值要推敲每个像素值的位数,或者若是该缓存器的子类不是被支撑的类型中的一种(ByteBufferShortBufferIntBuffer),那么将会抛出一个异常。

    public static Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)

    返回一个不成改变的位图,该位图来自源位图的子集,并按照可选的矩阵进行转换。它被初始化为跟源位图有同样的密度。

    参数

                                source  产生子位图的源位图;

                                x      子位图第一个像素在源位图的X坐标

                                y      子位图第一个像素在源位图的y坐标

                                width 子位图每一行的像素个数

                                height 子位图的行数

                                m     对像素值进行变换的可选矩阵

                                filter   若是为true,源图要被过滤。该参数仅在matrix包含了跨越一个翻转才有效

      返回值

    一个描述了源图指定子集的位图。

    异常  

    IllegalArgumentException       若是xywidthheight的值超出了源图的维度,该异常会被抛出。

    public static Bitmap createBitmap (int width, int height, Bitmap.Config config)

    返回一个指定高度和宽度的不成改变的位图。它的初始密度由getDensity()决意。

             参数

                       width 位图的宽度

                       height 位图的高度

                       config 位图的布局

             异常

    IllegalArgumentException       若是高度或宽度小于便是零,该异常被抛出。

            

    public static Bitmap createBitmap (Bitmap source, int x, int y, int width, int height)

             返回一个不成变的位图,该位图来自源图指定的子集。新位图可能跟源图同一个对象,或者是源图的一个拷贝。它被初始化为源图同样的密度。

                       参数

                                source 用来构建子集的源位图

                                x      子位图第一个像素在源位图的X坐标

                                y      子位图第一个像素在源位图的y坐标

                                width 子位图每一行的像素个数

                                height 子位图的行数

              

    public static Bitmap createBitmap (int[] colors, int offset, int stride, int width, int height, Bitmap.Configconfig)

    返回一个指定宽度和高度的不成变位图,该位图每个像素值便是色彩数组中对应的值。它初始化的密度由getDensity()来设定。

             参数

                          colors 用来初始化像素值得色彩数组

                          offset 在像素数组的第一个色彩值之前要忽视的像素个数

                          stride 行之间像素个数

                          width 位图的宽度

                          height 位图的高度

                          config 位图的布局。若是这个布局不支撑每个像素的alpha通道比如,RGB_565), 那么colors数组中的alpha位将被忽视被假定为FF

             异常 

    IllegalArgumentException  若是宽度值或高度值小于便是零,或者像素数组的长度小于像素个数,该异常被抛出。

    public static Bitmap createBitmap (Bitmap src)

    按照源位图返回一个不成改变的位图。新位图可能跟源位图是同一个对象,或者是一个拷贝。新位图被初始化为和源位图有同样的像素密度。

    public static Bitmap createBitmap (int[] colors, int width, int height, Bitmap.Config config)

    返回一个宽度和高度被指定的不成改变的位图,且该位图每一个像素值由色彩数组中对应的值来设定。它的初始像素密度由getDensity()决意。

      参数

    colors 用来初始化像素值得色彩数组。该数组必须至少和宽度*高度一样大。   width 位图的宽度

                       height 位图的高度

                       config 位图的布局。若是这个布局不支撑每个像素的alpha通道比如,RGB_565), 那么colors数组中的alpha位将被忽视被假定为FF

    异常 

    IllegalArgumentException       若是宽度值或高度值小于便是零,或者像素数组的长度小于像素个数,该异常被抛出。

    public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)

    从当前存在的位图,按必然的比例创建一个新的位图。

    参数

    src        用来构建子集的源位图

                     dstWidth   新位图期望的宽度

                     dstHeight  新位图期望的高度

        返回值

                 一个新的按比例变更的位图。

    public int describeContents ()

    没有特别的包内容。(原文:No special parcel contents.

    返回值

                                一个位掩码,指明被Parcelable序列化的特别对象类型的数据集。

    public void eraseColor (int c)

    用指定的色彩填充位图的像素值。

             异常 

    IilegalStateException       当该位图不成改变时

    public Bitmap extractAlpha ()

    返回一个新的位图,该位图从源图中捕获了alpha值。这个办法可能跟Canvas.drawBitmap()一路被画,色彩值从传递过来的画布中获取。

    返回值

                                一个包含源位图alpha通道值的位图。

    public Bitmap extractAlpha (Paint paint, int[] offsetXY)

    返回一个从源图中获取了alpha值的新位图。这些值可能被可选的画布参数所影响,该画布参数可以包含它本身的alpha值,或可能包含一个能改变成果位图实际尺寸的遮罩滤镜比如,一个模糊滤镜可以放大成果位图。若是offsetXY不为空,它会返回终极位图的偏移量总数,如许它就能跟源位图对齐。比如,若是画布包含半径为2的模糊区,那么offsetXY[] 将包含-2-2,所以位图的alpha值会遵守(-2-2)的偏移量去绘制,然后画源图时会导致模糊区域在视觉上跟源图对齐。

    返回位图的初始像素密度跟源图一样。

    参数

    paint           可选的画布,用来批改被返回位图的alpha值。默认为空值。

                     offsetXY      可选的数组,它返回x(索引为0) y (索引为1)的偏移量,该偏移量被用来定位返回的位图,如许它才会在视觉上跟源位图对齐。

        返回值

                 返回一个新的位图,该位图从源图中捕获了alpha值。这个办法可能跟Canvas.drawBitmap()一路被画,色彩值从传递过来的画布中获取。

    public final Bitmap.Config getConfig ()

    若是这个位图内涵的设备是一种公开的格局,那么返回这个设备,不然返回空值。

    public int getDensity ()

    返回位图的像素密度。

    默认的像素密度和当前的显示密度一样,除非当前的应用法度不支撑不合的屏幕密度,当它是DENSITY_DEFAULT时。要重视到兼容模式是由最初装载到过程的应用法度决意的。

    --共享同一个过程的应用法度必须有同样的兼容性,或者确保它们能明白地设置合适的位图密度。

    返回值

                                一个默认密度的变换因子,当变换因子未知时返回DENSITY_NONE值。

               拜见

               setDensity(int)

    DENSITY_DEFAULT

    densityDpi

    DENSITY_NONE

    public final int getHeight ()

    返回位图的高度值。

    public byte[] getNinePatchChunk ()

    返回一个装有私稀有据的可选数组,该数组被UI体系在一些位图中应用。该办法不要在应用法度主动调用。

    public int getPixel (int x, int y)

    返回指定地位的像素色彩值。若是xy越界负数,或各高傲于便是宽度或高度值,讲抛出一个异常。

    参数

    x        待返回像素的x坐标值(0-width-1)

                     y        待返回像素的y坐标值(0-height-1)

        返回值

                       指定坐标的argb色彩值。

      异常

                       若是xy越界,IilegalArgumentExcepiton将被抛出。

    public void getPixels (int[] pixels, int offset, int stride, int x, int y, int width, int height)

    把位图的数据拷贝到pixels[]中。每一个都由一个默示色彩值的int值来默示。幅度参数注解调用者容许的像素数组行间距。对凡是的填充成果,只要传递宽度值给幅度参数。

    参数

    pixels       接管位图色彩值的数组

    offset      写入到pixels[]中的第一个像素索引值

    stride        pixels[]中的行间距个数值必须大于便是位图宽度。不克不及为负数

    x          从位图中读取的第一个像素的x坐标值。

                     y             从位图中读取的第一个像素的y坐标值

                     width       从每一行中读取的像素宽度

                     height   读取的行数               

      异常

                       IilegalArgumentExcepiton       若是xywidthheight越界或stride的绝对值小于位图宽度时将被抛出。

                       ArrayIndexOutOfBoundsException          若是像素数组太小而无法接管指定书目标像素值时将被抛出。

    public final int getRowBytes ()

    返回位图每行像素总数的字节数。要重视,这里说的是位图华夏始态存储的像素。若是你调用了getPixels()或者setPixels(),那么像素就会同一地被处理惩罚成32bit值,它是按照色彩类进行填充的。

    返回值

                       原生态位图每行像素的字节总数。

    public int getScaledHeight (int targetDensity)

    一个便利的办法,它能返回被像素密度因子整除后的位图高度值。

    参数

    targetDensity          位图目标画布的密度

    返回值

                       按照密度比例因子处理惩罚后位图的高度值。

    public int getScaledHeight (DisplayMetrics metrics)

    便利地以DisplayMetrics的目标密度值调用getScaledHeight(int)

    public int getScaledHeight (Canvas canvas)

    便利地以Canvas的目标密度值调用getScaledHeight(int)

    public int getScaledWidth (DisplayMetrics metrics)

    便利地以DisplayMetrics的目标密度值调用getScaledWidth(int)

    public int getScaledWidth (int targetDensity)

    一个便利的办法,它能返回被像素密度因子整除后的位图宽度值。

    参数

    targetDensity          位图目标画布的密度

    返回值

                       按照密度比例因子处理惩罚后位图的宽度值。

    public int getScaledWidth (Canvas canvas)

    便利地以Canvas的目标密度值调用getScaledWidth (int)

    public final int getWidth ()

    返回位图的宽度。

    public final boolean hasAlpha ()

    返回true,若是位图的设备支撑每个像素的alpha值,并且这些像素可能包含不透明的alpha值。对于某些设备,一般都返回false(比如,RGB_565),因为它们不支撑每个像素的alpha值。尽管如此,对设备来说,这些位图可能被标识表记标帜为它所有的像素都是透明的。在这种景象下,hasAlpha()将会返回false。若是一个设备,比如ARGB_8888是没有被标识表记标帜的,那么它会默认返回true

    public final boolean isMutable ()

    若是该位图被标识表记标帜为可改变比如,能被画进去,那么返回true

    public final boolean isRecycled ()

    若是该位图已经被收受接管,返回true。若是那样,若试图获取它的像素值,一个错误将会产生,并且该位图不会被画。

    返回值

            若是位图已经被收受接管,返回true

    public void prepareToDraw ()

    重建所有与待画位图相干的缓存。在位图可清除的景象下,这个调用会尽力包管像素已经被解码。若是这个办法是被有多个位图的序列调用,优先级在LRU次序中供给比如,最后被调用的位图拥有最高的优先级。对于懈弛存无关的位图,这个调用时一个no-op,它是无害的。

    public void recycle ()

    开释和位图相干的本地对象,且清除对像素数据的引用。该办法不会同步开释像素数据。它仅仅容许在没有其它引用的景象下被体系垃圾收受接管。这个位图被标识表记标帜为“死的”,意味着若是getPixels()setPixels()被调用,一个异常会抛出,且它不画任何器材。这个操纵不成翻转,所以只有当你确信这个位图没有更多的用处时,它才干被调用。这是一个高等的调用, 且一般来说它不须要被调用,因为凡是的垃圾收受接管过程会在该位图没有其它引用的时辰,开释这些内存。

    public void setDensity (int density)

    指定位图的密度。当位图被画到一个有密度的画布上时,它会缩放到合适的比例

    参数

    density    该位图的密度缩放因子。若是密度未知,值为DENSITY_NONE

    拜见

          getDensity()

    DENSITY_DEFAULT

    densityDpi

    DENSITY_NONE

    public void setPixel (int x, int y, int color)

    把指定的色彩写入到位图中xy的坐标值的地位假设该位图是可变的

    参数

    X               待调换像素的x坐标(0width-1)

    Y               待调换像素的y坐标(0height-1)

    color         写入到位图的色彩值

    抛出

             IilegalStateException                      若是这个位图不成改变

    IIlegalArgumentException   若是xy的值超出位图的鸿沟

    public void setPixels (int[] pixels, int offset, int stride, int x, int y, int width, int height)

    用数组中的色彩值调换位图的像素值。数组中的每个元素是包装的整型,代表了色彩值。

    参数

          pixels        写到位图中的色彩值

    offset        pixels[]中读取的第一个色彩值的索引

    stride        位图行之间跳过的色彩个数。凡是这个值便是位图宽度,但它可以更更大或负数

    X               被写入位图中第一个像素的x坐标。

    Y               被写入位图中第一个像素的y坐标

    width        pixels[]中拷贝的每行的色彩个数

    height       写入到位图中的行数

    异常

          IilegalStateException                      若是这个位图不成改变

    IIlegalArgumentException   若是xywidthheight的值超出位图的鸿沟

    ArrayIndexOutOfBoundsException 若是像素队列太小乃至不克不及接管指定的像素位数。

    public void writeToParcel (Parcel p, int flags)

    把位图和它的像素值写入到parcel中。位图可以经由过程调用CREATOR.createFromParcel()进行重建。

    参数

      p                可以写入位图数据的parcel对象

    flages       附加的标识表记标帜,注解这个对象以什么体式格式写入。可能是0PARCELABLE_WRITE_RETURN_VALUE

  • 相关阅读:
    luogu P2639 [USACO09OCT]Bessie的体重问题Bessie's We…
    1001. 害死人不偿命的(3n+1)猜想 (15)
    1003. 我要通过!(20)
    1002. 写出这个数 (20)
    《C语言程序设计(第四版)》阅读心得(一)
    1006. 换个格式输出整数 (15)
    背包问题之多重背包
    背包问题之完全背包
    背包问题之0-1背包
    动态规划例题
  • 原文地址:https://www.cnblogs.com/merryjd/p/2863178.html
Copyright © 2011-2022 走看看