@@ -9,6 +9,7 @@ import androidx.appcompat.app.AppCompatActivity
99import android.os.Bundle
1010import android.util.Log
1111import android.util.Size
12+ import androidx.core.graphics.scale
1213import androidx.lifecycle.lifecycleScope
1314import com.radzivon.bartoshyk.avif.coder.HeifCoder
1415import com.radzivon.bartoshyk.avif.databinding.ActivityMainBinding
@@ -32,50 +33,56 @@ class MainActivity : AppCompatActivity() {
3233
3334 // Example of a call to a native method
3435
35- val buffer = this .assets.open(" test_avif.avif" ).source().buffer().readByteArray()
36- assert (HeifCoder ().isAvif(buffer))
37- val bitmap = HeifCoder ().decode(buffer)
38- val opts = BitmapFactory .Options ()
39- opts.inMutable = true
40- if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
41- opts.inPreferredConfig = Bitmap .Config .RGBA_F16
42- }
43- val decodedBitmap = BitmapFactory .decodeResource(resources, R .drawable.test_png )
44- val cc16 = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
45- decodedBitmap.copy(Bitmap .Config .RGBA_F16 , true )
36+ // val buffer = this.assets.open("test_avif.avif").source().buffer().readByteArray()
37+ // assert(HeifCoder().isAvif(buffer))
38+ // val bitmap = HeifCoder().decode(buffer)
39+ // val opts = BitmapFactory.Options()
40+ // opts.inMutable = true
41+ // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
42+ // opts.inPreferredConfig = Bitmap.Config.RGBA_F16
43+ // }
44+ val decodedBitmap = BitmapFactory .decodeResource(resources, R .drawable.test_png_with_alpha )
45+ var cc16 = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
46+ decodedBitmap.copy(Bitmap .Config .RGB_565 , true )
4647 } else {
4748 decodedBitmap.copy(Bitmap .Config .ARGB_8888 , true )
4849 }
49- binding.imageView.setImageBitmap(decodedBitmap)
50- binding.imageView.setImageBitmap(bitmap)
50+ val rescaledSize =
51+ aspectScale(Size (decodedBitmap.width, decodedBitmap.height), Size (1400 , 720 ))
52+ val cc16Rescaled = cc16.scale(rescaledSize.width, rescaledSize.height, true )
53+ cc16.recycle()
54+ cc16 = cc16Rescaled
5155 binding.imageView.setImageBitmap(cc16)
52- val avif12DepthBuffer =
53- this .assets.open(" test_avif_12_bitdepth.avif" ).source().buffer().readByteArray()
54- assert (HeifCoder ().isAvif(avif12DepthBuffer))
55- val avifHDRBitmap = HeifCoder ().decode(avif12DepthBuffer)
56- binding.imageView.setImageBitmap(avifHDRBitmap)
57- val heicBuffer = this .assets.open(" pexels-heif.heif" ).source().buffer().readByteArray()
58- assert (HeifCoder ().isHeif(heicBuffer))
59- val heicBitmap = HeifCoder ().decode(heicBuffer)
60- binding.imageView.setImageBitmap(heicBitmap)
61- assert (HeifCoder ().getSize(heicBuffer) != null )
62- assert (HeifCoder ().getSize(buffer) != null )
63- val heicScaled = HeifCoder ().decodeSampled(heicBuffer, 350 , 900 )
64- binding.imageView.setImageBitmap(heicScaled)
65- val extremlyLargeBitmapBuffer =
66- this .assets.open(" extremly_large.avif" ).source().buffer().readByteArray()
67- assert (HeifCoder ().isAvif(extremlyLargeBitmapBuffer))
68- val extremlyLargeBitmap = HeifCoder ().decode(extremlyLargeBitmapBuffer)
69- binding.imageView.setImageBitmap(extremlyLargeBitmap)
56+ // binding.imageView.setImageBitmap(decodedBitmap)
57+ // binding.imageView.setImageBitmap(bitmap)
58+ // binding.imageView.setImageBitmap(cc16)
59+ // val avif12DepthBuffer =
60+ // this.assets.open("test_avif_12_bitdepth.avif").source().buffer().readByteArray()
61+ // assert(HeifCoder().isAvif(avif12DepthBuffer))
62+ // val avifHDRBitmap = HeifCoder().decode(avif12DepthBuffer)
63+ // binding.imageView.setImageBitmap(avifHDRBitmap)
64+ // val heicBuffer = this.assets.open("pexels-heif.heif").source().buffer().readByteArray()
65+ // assert(HeifCoder().isHeif(heicBuffer))
66+ // val heicBitmap = HeifCoder().decode(heicBuffer)
67+ // binding.imageView.setImageBitmap(heicBitmap)
68+ // assert(HeifCoder().getSize(heicBuffer) != null)
69+ // assert(HeifCoder().getSize(buffer) != null)
70+ // val heicScaled = HeifCoder().decodeSampled(heicBuffer, 350, 900)
71+ // binding.imageView.setImageBitmap(heicScaled)
72+ // val extremlyLargeBitmapBuffer =
73+ // this.assets.open("extremly_large.avif").source().buffer().readByteArray()
74+ // assert(HeifCoder().isAvif(extremlyLargeBitmapBuffer))
75+ // val extremlyLargeBitmap = HeifCoder().decode(extremlyLargeBitmapBuffer)
76+ // binding.imageView.setImageBitmap(extremlyLargeBitmap)
7077
71- // val bytes = HeifCoder().encodeAvif(cc16)
72- // val ff = File(this.filesDir, "result.avif")
73- // ff.delete()
74- // val output = FileOutputStream(ff)
75- // output.sink().buffer().use {
76- // it.write(bytes)
77- // it.flush()
78- // }
78+ val bytes = HeifCoder ().encodeAvif(cc16)
79+ val ff = File (this .filesDir, " result.avif" )
80+ ff.delete()
81+ val output = FileOutputStream (ff)
82+ output.sink().buffer().use {
83+ it.write(bytes)
84+ it.flush()
85+ }
7986// output.close()
8087// Log.d("p", bytes.size.toString())
8188// writeHevc(decodedBitmap)
@@ -94,17 +101,24 @@ class MainActivity : AppCompatActivity() {
94101// output.close()
95102// Log.d("p", bytes.size.toString())
96103// writeHevc(decodedBitmap)
97- // val numbers = IntArray(5) { 1 * (it + 1) }
98- // numbers.forEach {
99- // testEncoder("test_${it}.jpg")
100- // }
104+ val numbers = IntArray (5 ) { 1 * (it + 1 ) }
105+ numbers.forEach {
106+ testEncoder(" test_${it} .jpg" )
107+ }
101108 }
102109
103110 private fun testEncoder (assetName : String ) {
104111 val buffer = this .assets.open(assetName).source().buffer().readByteArray()
105112 val opts = BitmapFactory .Options ()
106113 opts.inMutable = true
107- val bitmap = BitmapFactory .decodeByteArray(buffer, 0 , buffer.size, opts)
114+ var bitmap = BitmapFactory .decodeByteArray(buffer, 0 , buffer.size, opts)
115+ val rr = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
116+ bitmap.copy(Bitmap .Config .RGBA_F16 , true )
117+ } else {
118+ bitmap.copy(Bitmap .Config .ARGB_8888 , true )
119+ }
120+ bitmap.recycle()
121+ bitmap = rr
108122// val newBitmap = bitmap.aspectFit(bitmap.width, bitmap.height)
109123// bitmap.recycle()
110124 val bytes = HeifCoder ().encodeAvif(bitmap)
0 commit comments