ImageDecoder 类

定义

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为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
继承
ImageDecoder
属性
实现

注解

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为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 SourceOnHeaderDecodedListener 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) -&gt; {
                 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),它通常具有 ConfigBitmap.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) -&gt; {
                 decoder.setPostProcessor((canvas) -&gt; {
                         // 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) -&gt; {
                 decoder.setOnPartialImageListener((DecodeException e) -&gt; {
                         // 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.ImageDecoderJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

字段

AllocatorDefault
已过时.

对像素内存使用默认分配。

AllocatorHardware
已过时.

需要一个 Bitmap.Config#HARDWAREBitmap

AllocatorSharedMemory
已过时.

将共享内存用于像素内存。

AllocatorSoftware
已过时.

对像素内存使用软件分配。

MemoryPolicyDefault
已过时.

对内部Bitmap使用最自然Bitmap.Config的 。

MemoryPolicyLowRam
已过时.

如果可能,请使用更 Bitmap.Config 密集的内存,但代价是一些图像质量。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Crop

如果已设置,则返回裁剪矩形。 - 或 - 将输出裁剪为 subset 缩放图像的输出。

DecodeAsAlphaMaskEnabled

返回是否将单通道输入视为 alpha。 - 或 - 指定是否可能将输出视为 alpha 掩码。

Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
JniPeerMembers

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

MemorySizePolicy

检索解码 Bitmap的内存策略。 - 或 - 指定解码 Bitmap的内存策略。

MutableRequired

返回解码 Bitmap 后是否可变。 - 或 - 指定是否 Bitmap 应可变。

OnPartialImageListener

设置(替换) OnPartialImageListener 此对象。

PeerReference

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
PostProcessor

PostProcessor返回当前设置。 - 或 - 解码和缩放后修改图像。

ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
UnpremultipliedRequired

Bitmap返回是否具有无乘像素。 - 或 - 指定是否 Bitmap 应具有不受支持的像素。

方法

Clone()

创建并返回此对象的副本。

(继承自 Object)
Close()

关闭此资源,放弃任何基础资源。

CreateSource(AssetManager, String)

从 . android.net.Uri创建一个新Source项。

CreateSource(Byte[])

从 . android.net.Uri创建一个新Source项。

CreateSource(Byte[], Int32, Int32)

从 . android.net.Uri创建一个新Source项。

CreateSource(ByteBuffer)

从 . android.net.Uri创建一个新Source项。

CreateSource(ContentResolver, Uri)

从 . android.net.Uri创建一个新Source项。

CreateSource(File)

从 . android.net.Uri创建一个新Source项。

CreateSource(ICallable)

从 . android.net.Uri创建一个新Source项。

CreateSource(Resources, Int32)

从 . android.net.Uri创建一个新Source项。

DecodeBitmap(ImageDecoder+Source)

请参阅 #decodeBitmap(Source, OnHeaderDecodedListener)

DecodeBitmap(ImageDecoder+Source, ImageDecoder+IOnHeaderDecodedListener)

请参阅 #decodeBitmap(Source, OnHeaderDecodedListener)

DecodeDrawable(ImageDecoder+Source)

请参阅 #decodeDrawable(Source, OnHeaderDecodedListener)

DecodeDrawable(ImageDecoder+Source, ImageDecoder+IOnHeaderDecodedListener)

请参阅 #decodeDrawable(Source, OnHeaderDecodedListener)

Dispose()

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
Dispose(Boolean)

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
IsMimeTypeSupported(String)

如果给定的 MIME 类型是受支持的文件格式,则可以由此类解码。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetTargetColorSpace(ColorSpace)

指定输出所需的 ColorSpace 值。

SetTargetSampleSize(Int32)

使用 sampleSize 设置目标大小。

SetTargetSize(Int32, Int32)

指定输出 Drawable 的大小或 Bitmap

ToArray<T>()

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<><

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)

事件

PartialImage

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

显式接口实现

IJavaPeerable.Disposed()

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
IJavaPeerable.Finalized()

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

GetJniTypeName(IJavaPeerable)

用于将编码图像(例如PNGJPEGWEBPGIFHEIF)转换为Drawable对象或Bitmap对象的类。

适用于