mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
CFV2 handle keyboard images and gifs.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright 2023 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.thoughtcrime.securesms.keyboard
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import androidx.annotation.WorkerThread
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader
|
||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||
import java.util.concurrent.ExecutionException
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.TimeoutException
|
||||
|
||||
object KeyboardUtil {
|
||||
|
||||
@WorkerThread
|
||||
fun getImageDetails(glideRequests: GlideRequests, uri: Uri): ImageDetails? {
|
||||
return try {
|
||||
val bitmap: Bitmap = glideRequests.asBitmap()
|
||||
.load(DecryptableStreamUriLoader.DecryptableUri(uri))
|
||||
.skipMemoryCache(true)
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.submit()
|
||||
.get(1000, TimeUnit.MILLISECONDS)
|
||||
val topLeft = bitmap.getPixel(0, 0)
|
||||
ImageDetails(bitmap.width, bitmap.height, Color.alpha(topLeft) < 255)
|
||||
} catch (e: InterruptedException) {
|
||||
null
|
||||
} catch (e: ExecutionException) {
|
||||
null
|
||||
} catch (e: TimeoutException) {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
data class ImageDetails(val width: Int, val height: Int, val hasTransparency: Boolean)
|
||||
}
|
||||
Reference in New Issue
Block a user