ImageDecoder 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于将编码图像(例如PNG
、JPEG
、WEBP
或GIF
HEIF
)转换为Drawable
对象或Bitmap
对象的类。
[Android.Runtime.Register("android/graphics/ImageDecoder", ApiSince=28, DoNotGenerateAcw=true)]
public sealed class ImageDecoder : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IAutoCloseable
[<Android.Runtime.Register("android/graphics/ImageDecoder", ApiSince=28, DoNotGenerateAcw=true)>]
type ImageDecoder = class
inherit Object
interface IAutoCloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 继承
- 属性
- 实现
注解
用于将编码图像(例如PNG
、JPEG
、WEBP
或GIF
HEIF
)转换为Drawable
对象或Bitmap
对象的类。
若要使用它,请先使用其中一个createSource
重载。Source Source
例如,若要从 Uri
、调用 #createSource(ContentResolver, Uri)
并将结果 #decodeDrawable(Source)
传递给或 #decodeBitmap(Source)
:
File file = new File(...);
ImageDecoder.Source source = ImageDecoder.createSource(file);
Drawable drawable = ImageDecoder.decodeDrawable(source);
若要更改默认设置,请向或传递和传递 Source Source
OnHeaderDecodedListener OnHeaderDecodedListener
。#decodeDrawable(Source, OnHeaderDecodedListener)
#decodeBitmap(Source, OnHeaderDecodedListener)
例如,若要创建包含原始图像的一半宽度和高度的采样图像,请在以下内部OnHeaderDecodedListener#onHeaderDecoded onHeaderDecoded
调用#setTargetSampleSize setTargetSampleSize(2)
:
OnHeaderDecodedListener listener = new OnHeaderDecodedListener() {
public void onHeaderDecoded(ImageDecoder decoder, ImageInfo info, Source source) {
decoder.setTargetSampleSize(2);
}
};
Drawable drawable = ImageDecoder.decodeDrawable(source, listener);
ImageInfo ImageInfo
包含有关编码图像的信息,如其宽度和高度,并且Source Source
当单个OnHeaderDecodedListener OnHeaderDecodedListener
对象与多个Source Source
对象一起使用时,该图像可用于匹配特定Source Source
图像。
OnHeaderDecodedListener OnHeaderDecodedListener
也可以作为 lambda 实现:
Drawable drawable = ImageDecoder.decodeDrawable(source, (decoder, info, src) -> {
decoder.setTargetSampleSize(2);
});
如果编码的图像是动画GIF
图像,或者WEBP
#decodeDrawable decodeDrawable
将返回一个AnimatedImageDrawable
。 若要启动动画,请调用 AnimatedImageDrawable#start AnimatedImageDrawable.start()
:
Drawable drawable = ImageDecoder.decodeDrawable(source);
if (drawable instanceof AnimatedImageDrawable) {
((AnimatedImageDrawable) drawable).start();
}
默认情况下, Bitmap
创建者 ImageDecoder
(包括其中一个 Drawable
)将是不可变的(即 Bitmap#isMutable Bitmap.isMutable()
返回 false
),它通常具有 Config
Bitmap.Config#HARDWARE
。 尽管这些属性可以更改(#setMutableRequired setMutableRequired(true)
它仅与#decodeBitmap(Source)
和#decodeBitmap(Source, OnHeaderDecodedListener)
兼容),但#setAllocator
也可以应用自定义效果,而不考虑最终返回对象的可变性,方法是传递一个PostProcessor
。#setPostProcessor setPostProcessor
A PostProcessor
也可以是 lambda:
Drawable drawable = ImageDecoder.decodeDrawable(source, (decoder, info, src) -> {
decoder.setPostProcessor((canvas) -> {
// This will create rounded corners.
Path path = new Path();
path.setFillType(Path.FillType.INVERSE_EVEN_ODD);
int width = canvas.getWidth();
int height = canvas.getHeight();
path.addRoundRect(0, 0, width, height, 20, 20, Path.Direction.CW);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.TRANSPARENT);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
canvas.drawPath(path, paint);
return PixelFormat.TRANSLUCENT;
});
});
如果编码的图像不完整或包含错误,或者 Exception
如果在解码过程中发生,将引发一个 DecodeException DecodeException
。 在某些情况下, ImageDecoder
可能已解码图像的一部分。 若要显示部分图像, OnPartialImageListener OnPartialImageListener
必须传递给 #setOnPartialImageListener setOnPartialImageListener
。 例如:
Drawable drawable = ImageDecoder.decodeDrawable(source, (decoder, info, src) -> {
decoder.setOnPartialImageListener((DecodeException e) -> {
// Returning true indicates to create a Drawable or Bitmap even
// if the whole image could not be decoded. Any remaining lines
// will be blank.
return true;
});
});
适用于 . 的 android.graphics.ImageDecoder
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
字段
AllocatorDefault |
已过时.
对像素内存使用默认分配。 |
AllocatorHardware |
已过时.
需要一个 |
AllocatorSharedMemory |
已过时.
将共享内存用于像素内存。 |
AllocatorSoftware |
已过时.
对像素内存使用软件分配。 |
MemoryPolicyDefault |
已过时.
对内部 |
MemoryPolicyLowRam |
已过时.
如果可能,请使用更 |
属性
Class |
返回此 |
Crop |
如果已设置,则返回裁剪矩形。 - 或 - 将输出裁剪为 |
DecodeAsAlphaMaskEnabled |
返回是否将单通道输入视为 alpha。 - 或 - 指定是否可能将输出视为 alpha 掩码。 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
用于将编码图像(例如 |
JniPeerMembers |
用于将编码图像(例如 |
MemorySizePolicy |
检索解码 |
MutableRequired |
返回解码 |
OnPartialImageListener |
设置(替换) |
PeerReference |
用于将编码图像(例如 |
PostProcessor |
|
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 (继承自 Object) |
UnpremultipliedRequired |
|
方法
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Close() |
关闭此资源,放弃任何基础资源。 |
CreateSource(AssetManager, String) |
从 . |
CreateSource(Byte[], Int32, Int32) |
从 . |
CreateSource(Byte[]) |
从 . |
CreateSource(ByteBuffer) |
从 . |
CreateSource(ContentResolver, Uri) |
从 . |
CreateSource(File) |
从 . |
CreateSource(ICallable) |
从 . |
CreateSource(Resources, Int32) |
从 . |
DecodeBitmap(ImageDecoder+Source, ImageDecoder+IOnHeaderDecodedListener) |
请参阅 |
DecodeBitmap(ImageDecoder+Source) |
请参阅 |
DecodeDrawable(ImageDecoder+Source, ImageDecoder+IOnHeaderDecodedListener) |
请参阅 |
DecodeDrawable(ImageDecoder+Source) |
请参阅 |
Dispose() |
用于将编码图像(例如 |
Dispose(Boolean) |
用于将编码图像(例如 |
Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
IsMimeTypeSupported(String) |
如果给定的 MIME 类型是受支持的文件格式,则可以由此类解码。 |
JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
SetTargetColorSpace(ColorSpace) |
指定输出所需的 |
SetTargetSampleSize(Int32) |
使用 sampleSize 设置目标大小。 |
SetTargetSize(Int32, Int32) |
指定输出 |
ToArray<T>() |
用于将编码图像(例如 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
用于将编码图像(例如 |
Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<>< (继承自 Object) |
Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
事件
PartialImage |
用于将编码图像(例如 |
显式接口实现
IJavaPeerable.Disposed() |
用于将编码图像(例如 |
IJavaPeerable.DisposeUnlessReferenced() |
用于将编码图像(例如 |
IJavaPeerable.Finalized() |
用于将编码图像(例如 |
IJavaPeerable.JniManagedPeerState |
用于将编码图像(例如 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
用于将编码图像(例如 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
用于将编码图像(例如 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
用于将编码图像(例如 |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
用于将编码图像(例如 |
GetJniTypeName(IJavaPeerable) |
用于将编码图像(例如 |