Most visited

Recently visited

Added in API level 10

BitmapRegionDecoder

public final class BitmapRegionDecoder
extends Object

java.lang.Object
   ↳ android.graphics.BitmapRegionDecoder


BitmapRegionDecoder可用于从图像中解码矩形区域。 当原始图像很大并且只需要图像的一部分时,BitmapRegionDecoder特别有用。

要创建BitmapRegionDecoder,请调用newInstance(...)。 给定BitmapRegionDecoder,用户可以重复调用decodeRegion()来获取指定区域的解码位图。

Summary

Public methods

Bitmap decodeRegion(Rect rect, BitmapFactory.Options options)

解码由rect指定的图像中的矩形区域。

int getHeight()

返回原始图像的高度

int getWidth()

返回原始图像的宽度

final boolean isRecycled()

如果此区域解码器已被回收,则返回true。

static BitmapRegionDecoder newInstance(InputStream is, boolean isShareable)

从输入流创建一个BitmapRegionDecoder。

static BitmapRegionDecoder newInstance(FileDescriptor fd, boolean isShareable)

从文件描述符创建一个BitmapRegionDecoder。

static BitmapRegionDecoder newInstance(String pathName, boolean isShareable)

从文件路径创建一个BitmapRegionDecoder。

static BitmapRegionDecoder newInstance(byte[] data, int offset, int length, boolean isShareable)

从指定的字节数组创建一个BitmapRegionDecoder。

void recycle()

释放与该区域解码器相关联的内存,并将区域解码器标记为“死”,这意味着如果调用decodeRegion(),getWidth()或getHeight(),它将引发异常。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object

Public methods

decodeRegion

Added in API level 10
Bitmap decodeRegion (Rect rect, 
                BitmapFactory.Options options)

解码由rect指定的图像中的矩形区域。

Parameters
rect Rect: The rectangle that specified the region to be decode.
options BitmapFactory.Options: null-ok; Options that control downsampling. inPurgeable is not supported.
Returns
Bitmap The decoded bitmap, or null if the image data could not be decoded.

getHeight

Added in API level 10
int getHeight ()

返回原始图像的高度

Returns
int

getWidth

Added in API level 10
int getWidth ()

返回原始图像的宽度

Returns
int

isRecycled

Added in API level 10
boolean isRecycled ()

如果此区域解码器已被回收,则返回true。 如果是这样,那么尝试使用它的方法是错误的。

Returns
boolean true if the region decoder has been recycled

newInstance

Added in API level 10
BitmapRegionDecoder newInstance (InputStream is, 
                boolean isShareable)

从输入流创建一个BitmapRegionDecoder。 流的位置将是编码数据读取后的位置。 目前只支持JPEG和PNG格式。

Parameters
is InputStream: The input stream that holds the raw data to be decoded into a BitmapRegionDecoder.
isShareable boolean: If this is true, then the BitmapRegionDecoder may keep a shallow reference to the input. If this is false, then the BitmapRegionDecoder will explicitly make a copy of the input data, and keep that. Even if sharing is allowed, the implementation may still decide to make a deep copy of the input data. If an image is progressively encoded, allowing sharing may degrade the decoding speed.
Returns
BitmapRegionDecoder BitmapRegionDecoder, or null if the image data could not be decoded.
Throws
IOException if the image format is not supported or can not be decoded.

KITKAT之前,如果is.markSupported()返回true, is.mark(1024)调用is.mark(1024) KITKAT ,情况不再一样了。

newInstance

Added in API level 10
BitmapRegionDecoder newInstance (FileDescriptor fd, 
                boolean isShareable)

从文件描述符创建一个BitmapRegionDecoder。 描述符中的位置在返回时不会改变,所以描述符可以按原样再次使用。 目前只支持JPEG和PNG格式。

Parameters
fd FileDescriptor: The file descriptor containing the data to decode
isShareable boolean: If this is true, then the BitmapRegionDecoder may keep a shallow reference to the input. If this is false, then the BitmapRegionDecoder will explicitly make a copy of the input data, and keep that. Even if sharing is allowed, the implementation may still decide to make a deep copy of the input data. If an image is progressively encoded, allowing sharing may degrade the decoding speed.
Returns
BitmapRegionDecoder BitmapRegionDecoder, or null if the image data could not be decoded.
Throws
IOException if the image format is not supported or can not be decoded.

newInstance

Added in API level 10
BitmapRegionDecoder newInstance (String pathName, 
                boolean isShareable)

从文件路径创建一个BitmapRegionDecoder。 目前只支持JPEG和PNG格式。

Parameters
pathName String: complete path name for the file to be decoded.
isShareable boolean: If this is true, then the BitmapRegionDecoder may keep a shallow reference to the input. If this is false, then the BitmapRegionDecoder will explicitly make a copy of the input data, and keep that. Even if sharing is allowed, the implementation may still decide to make a deep copy of the input data. If an image is progressively encoded, allowing sharing may degrade the decoding speed.
Returns
BitmapRegionDecoder BitmapRegionDecoder, or null if the image data could not be decoded.
Throws
IOException if the image format is not supported or can not be decoded.

newInstance

Added in API level 10
BitmapRegionDecoder newInstance (byte[] data, 
                int offset, 
                int length, 
                boolean isShareable)

从指定的字节数组创建一个BitmapRegionDecoder。 目前只支持JPEG和PNG格式。

Parameters
data byte: byte array of compressed image data.
offset int: offset into data for where the decoder should begin parsing.
length int: the number of bytes, beginning at offset, to parse
isShareable boolean: If this is true, then the BitmapRegionDecoder may keep a shallow reference to the input. If this is false, then the BitmapRegionDecoder will explicitly make a copy of the input data, and keep that. Even if sharing is allowed, the implementation may still decide to make a deep copy of the input data. If an image is progressively encoded, allowing sharing may degrade the decoding speed.
Returns
BitmapRegionDecoder BitmapRegionDecoder, or null if the image data could not be decoded.
Throws
IOException if the image format is not supported or can not be decoded.

recycle

Added in API level 10
void recycle ()

释放与该区域解码器相关联的内存,并将区域解码器标记为“死”,这意味着如果调用decodeRegion(),getWidth()或getHeight(),它将引发异常。

这个操作不能颠倒过来,所以只有在你确定区域解码器没有进一步的用途时才应该调用它。 这是一个高级调用,通常不需要调用,因为当没有更多的这个区域解码器的引用时,正常的GC进程将释放这个内存。

Protected methods

finalize

Added in API level 10
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize方法以处置系统资源或执行其他清理。

的常规协定finalize是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括再制作该对象提供给其他线程; 然而, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

Objectfinalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定的对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在针对某个对象调用 finalize方法之后,不会采取进一步的操作,直到Java虚拟机再次确定不再有任何途径可以通过任何尚未死亡的线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定对象,Java虚拟机永远不会多次调用 finalize方法。

finalize方法抛出的任何异常 finalize导致终止此对象的终止,但会被忽略。

Throws
Throwable

Hooray!