From 6321ebe5be5323b42060c54738d0c7d7cd1a5dd2 Mon Sep 17 00:00:00 2001 From: Oupson Date: Wed, 16 Sep 2020 23:18:55 +0200 Subject: [PATCH] Working on ExperimentalApngEncoder --- .../oupson/apng/encoder/ExperimentalApngEncoder.kt | 14 +++++++++----- .../apngcreator/activities/CreatorActivity.kt | 6 ++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/apng_library/src/main/java/oupson/apng/encoder/ExperimentalApngEncoder.kt b/apng_library/src/main/java/oupson/apng/encoder/ExperimentalApngEncoder.kt index 29a53b7..7f92cbc 100644 --- a/apng_library/src/main/java/oupson/apng/encoder/ExperimentalApngEncoder.kt +++ b/apng_library/src/main/java/oupson/apng/encoder/ExperimentalApngEncoder.kt @@ -46,12 +46,16 @@ class ExperimentalApngEncoder( disposeOp: Utils.Companion.DisposeOp = Utils.Companion.DisposeOp.APNG_DISPOSE_OP_NONE, usePngEncoder: Boolean = false ) { - val btm = BitmapFactory.decodeStream(inputStream).let { + val btm = BitmapFactory.decodeStream(inputStream, null, BitmapFactory.Options().also { conf -> if (Build.VERSION.SDK_INT >= + Build.VERSION_CODES.O) { + conf.outConfig = config + } + })?.let { if (it.config != config) it.copy(config, it.isMutable) else it - } + }!! inputStream.close() writeFrame(btm, delay, xOffsets, yOffsets, blendOp, disposeOp, usePngEncoder) @@ -210,11 +214,11 @@ class ExperimentalApngEncoder( ) // COMPRESSION - ihdrBody.add(0.toByte()) + ihdrBody.add(0) // FILTER - ihdrBody.add(0.toByte()) + ihdrBody.add(0) // INTERLACE - ihdrBody.add(0.toByte()) + ihdrBody.add(0) // Generate CRC val crC32 = CRC32() diff --git a/app-test/src/main/java/oupson/apngcreator/activities/CreatorActivity.kt b/app-test/src/main/java/oupson/apngcreator/activities/CreatorActivity.kt index b2d4448..1cfda4d 100644 --- a/app-test/src/main/java/oupson/apngcreator/activities/CreatorActivity.kt +++ b/app-test/src/main/java/oupson/apngcreator/activities/CreatorActivity.kt @@ -143,13 +143,15 @@ class CreatorActivity : AppCompatActivity() { ) else btm, - delay = uri.second.toFloat() + delay = uri.second.toFloat(), + usePngEncoder = true ) //input.close() } else { encoder.writeFrame( str, - delay = uri.second.toFloat() + delay = uri.second.toFloat(), + usePngEncoder = true ) } str.close()