mirror of
https://github.com/FossifyOrg/Gallery.git
synced 2024-11-26 22:47:59 +01:00
creating GlideDecoder, to be used with subsamplingscaleimageview
This commit is contained in:
parent
582893c66b
commit
f6c8dbd444
1 changed files with 49 additions and 0 deletions
|
@ -0,0 +1,49 @@
|
||||||
|
package com.simplemobiletools.gallery.helpers
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.Bitmap
|
||||||
|
import android.graphics.Canvas
|
||||||
|
import android.graphics.drawable.BitmapDrawable
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.net.Uri
|
||||||
|
import com.bumptech.glide.Glide
|
||||||
|
import com.bumptech.glide.load.DecodeFormat
|
||||||
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
|
import com.bumptech.glide.request.RequestOptions
|
||||||
|
import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder
|
||||||
|
|
||||||
|
|
||||||
|
class GlideDecoder : ImageDecoder {
|
||||||
|
override fun decode(context: Context, uri: Uri): Bitmap {
|
||||||
|
val options = RequestOptions()
|
||||||
|
.format(DecodeFormat.PREFER_ARGB_8888)
|
||||||
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||||
|
|
||||||
|
val drawable = Glide.with(context)
|
||||||
|
.load(uri)
|
||||||
|
.apply(options)
|
||||||
|
.submit()
|
||||||
|
.get()
|
||||||
|
|
||||||
|
return drawableToBitmap(drawable)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun drawableToBitmap(drawable: Drawable): Bitmap {
|
||||||
|
if (drawable is BitmapDrawable) {
|
||||||
|
if (drawable.bitmap != null) {
|
||||||
|
return drawable.bitmap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val bitmap = if (drawable.intrinsicWidth <= 0 || drawable.intrinsicHeight <= 0) {
|
||||||
|
Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
|
||||||
|
} else {
|
||||||
|
Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
|
||||||
|
}
|
||||||
|
|
||||||
|
val canvas = Canvas(bitmap)
|
||||||
|
drawable.setBounds(0, 0, canvas.width, canvas.height)
|
||||||
|
drawable.draw(canvas)
|
||||||
|
return bitmap
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue