From f40879330a063c80f2fd097a46a83e756a0f0fda Mon Sep 17 00:00:00 2001 From: Colin White Date: Wed, 16 Mar 2022 16:28:22 -0500 Subject: [PATCH 1/2] Support loading ByteArrays. --- .../androidTest/java/coil/RealImageLoaderAndroidTest.kt | 7 +++++++ coil-base/src/main/java/coil/RealImageLoader.kt | 2 ++ coil-base/src/main/java/coil/map/ByteArrayMapper.kt | 9 +++++++++ docs/getting_started.md | 1 + 4 files changed, 19 insertions(+) create mode 100644 coil-base/src/main/java/coil/map/ByteArrayMapper.kt diff --git a/coil-base/src/androidTest/java/coil/RealImageLoaderAndroidTest.kt b/coil-base/src/androidTest/java/coil/RealImageLoaderAndroidTest.kt index e2d16b0bd5..6b2e17b05a 100644 --- a/coil-base/src/androidTest/java/coil/RealImageLoaderAndroidTest.kt +++ b/coil-base/src/androidTest/java/coil/RealImageLoaderAndroidTest.kt @@ -212,6 +212,13 @@ class RealImageLoaderAndroidTest { testExecute(data) } + @Test + fun byteArray() = runTest { + val data = context.resources.openRawResource(R.drawable.normal).readBytes() + testEnqueue(data) + testExecute(data) + } + // endregion @Test diff --git a/coil-base/src/main/java/coil/RealImageLoader.kt b/coil-base/src/main/java/coil/RealImageLoader.kt index ab45685c00..6d26f7a4c5 100644 --- a/coil-base/src/main/java/coil/RealImageLoader.kt +++ b/coil-base/src/main/java/coil/RealImageLoader.kt @@ -17,6 +17,7 @@ import coil.intercept.EngineInterceptor import coil.intercept.RealInterceptorChain import coil.key.FileKeyer import coil.key.UriKeyer +import coil.map.ByteArrayMapper import coil.map.FileUriMapper import coil.map.HttpUrlMapper import coil.map.ResourceIntMapper @@ -86,6 +87,7 @@ internal class RealImageLoader( .add(FileUriMapper()) .add(ResourceUriMapper()) .add(ResourceIntMapper()) + .add(ByteArrayMapper()) // Keyers .add(UriKeyer()) .add(FileKeyer(options.addLastModifiedToFileCacheKey)) diff --git a/coil-base/src/main/java/coil/map/ByteArrayMapper.kt b/coil-base/src/main/java/coil/map/ByteArrayMapper.kt new file mode 100644 index 0000000000..ddf736a766 --- /dev/null +++ b/coil-base/src/main/java/coil/map/ByteArrayMapper.kt @@ -0,0 +1,9 @@ +package coil.map + +import coil.request.Options +import java.nio.ByteBuffer + +internal class ByteArrayMapper : Mapper { + + override fun map(data: ByteArray, options: Options): ByteBuffer = ByteBuffer.wrap(data) +} diff --git a/docs/getting_started.md b/docs/getting_started.md index 99b934300c..04c2de3c15 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -106,6 +106,7 @@ The base data types that are supported by all `ImageLoader` instances are: * @DrawableRes Int * Drawable * Bitmap +* ByteArray * ByteBuffer ## Supported Image Formats From 28f56e93707b990b7986e619dd7a58370b8f228d Mon Sep 17 00:00:00 2001 From: Colin White Date: Thu, 5 May 2022 20:30:03 -0400 Subject: [PATCH 2/2] Docs. --- coil-base/src/main/java/coil/request/ImageRequest.kt | 1 + coil-singleton/src/main/java/coil/Extensions.kt | 1 + 2 files changed, 2 insertions(+) diff --git a/coil-base/src/main/java/coil/request/ImageRequest.kt b/coil-base/src/main/java/coil/request/ImageRequest.kt index bf77e684fd..24e8541b53 100644 --- a/coil-base/src/main/java/coil/request/ImageRequest.kt +++ b/coil-base/src/main/java/coil/request/ImageRequest.kt @@ -451,6 +451,7 @@ class ImageRequest private constructor( * - [DrawableRes] * - [Drawable] * - [Bitmap] + * - [ByteArray] * - [ByteBuffer] */ fun data(data: Any?) = apply { diff --git a/coil-singleton/src/main/java/coil/Extensions.kt b/coil-singleton/src/main/java/coil/Extensions.kt index 0a949deebf..e0c9966b9d 100644 --- a/coil-singleton/src/main/java/coil/Extensions.kt +++ b/coil-singleton/src/main/java/coil/Extensions.kt @@ -43,6 +43,7 @@ inline val Context.imageLoader: ImageLoader * - [DrawableRes] [Int] * - [Drawable] * - [Bitmap] + * - [ByteArray] * - [ByteBuffer] * * @param data The data to load.