Skip to content

Latest commit

 

History

History
186 lines (131 loc) · 11.1 KB

decoder_zh.md

File metadata and controls

186 lines (131 loc) · 11.1 KB

Decoder

翻译:English

Decoder 用于解码图片文件,支持的每一种图片类型都有对应的 Decoder 实现,如下表所示:

Format Decoder Dependent modules Android iOS Desktop Web
jpeg BitmapFactoryDecoder -
jpeg SkiaDecoder -
png BitmapFactoryDecoder -
png SkiaDecoder -
webp BitmapFactoryDecoder -
webp SkiaDecoder -
bmp BitmapFactoryDecoder -
bmp SkiaDecoder -
heif BitmapFactoryDecoder - ✅ (API 28)
avif BitmapFactoryDecoder - ✅ (API 31)
gif ImageDecoderGifDecoder sketch-animated-gif ✅ (API 28)
gif MovieGifDecoder
(不支持 resize)
sketch-animated-gif
gif SkiaGifDecoder
(不支持 resize)
sketch-animated-gif
gif KoralGifDecoder sketch-animated-gif-koral
webp 动图 ImageDecoderAnimatedWebpDecoder sketch-animated-webp ✅ (API 28)
webp 动图 SkiaAnimatedWebpDecoder
(不支持 resize)
sketch-animated-webp
heif 动图 ImageDecoderAnimatedHeifDecoder sketch-animated-heif ✅ (API 30)
svg SvgDecoder sketch-svg
(不支持 CSS)

(不支持 CSS)

(不支持 CSS)
视频帧 VideoFrameDecoder sketch-video
视频帧 FFmpegVideoFrameDecoder sketch-video-ffmpeg
Apk Icon ApkIconDecoder sketch-extensions-core

Important

上述组件都支持自动注册,你只需要导入即可,无需额外配置,如果你需要手动注册, 请阅读文档:《注册组件》

扩展 Decoder

先实现 Decoder 接口定义你的 Decoder 和它的 Factory

然后参考文档 《注册组件》 注册你的 Decoder 即可

Caution

  1. 自定义 Decoder 需要应用 ImageRequest 中的很多与图片质量和尺寸相关的属性,例如 size、colorType、colorSpace 等,可参考其它 Decoder 实现
  2. 如果你的 Decoder 是解码动图的话一定要判断 ImageRequest.disallowAnimatedImage 参数

解码属性

BitmapColorType

BitmapColorType 用于设置位图的颜色类型,可选值有:

  • FixedColorType:始终使用指定的颜色类型
  • LowQualityColorType:优先使用低质量的颜色类型
    • Android 平台上 jpeg 图片使用 RGB_565,其它使用默认值
    • 非 Android 平台上 jpeg 和 webp 图片使用 RGB_565,其它使用 ARGB_4444
  • HighQualityColorType:优先使用高质量的颜色类型
    • Android 平台上 API 26 以上使用 RGBA_F16,其它使用默认值
    • 非 Android 平台上始终使用 RGBA_F16

示例:

ImageRequest(context, "https://example.com/image.jpg") {
  // 在 Android 平台上使用指定的颜色类型
  colorType(Bitmap.Config.RGB_565)

  // 在非 Android 平台上使用指定的颜色类型
  colorType(ColorType.RGBA_F16)

  // 优先使用低质量的颜色类型
  colorType(LowQualityColorType)

  // 优先使用高质量的颜色类型
  colorType(HighQualityColorType)
}

BitmapColorSpace

BitmapColorSpace 用于设置位图的颜色空间,可选值有:

  • FixedColorSpace:始终使用指定的颜色空间

示例:

ImageRequest(context, "https://example.com/image.jpg") {
  // 在 Android 平台上使用指定的颜色空间
  colorSpace(ColorSpace.Named.DISPLAY_P3)

  // 在非 Android 平台上使用指定的颜色空间
  colorSpace(ColorSpace.displayP3)
}

preferQualityOverSpeed

preferQualityOverSpeed 用于设置质量优先解码时质量优先,只能在 Android 平台使用。

示例:

ImageRequest(context, "https://example.com/image.jpg") {
  preferQualityOverSpeed(true)
}