CFV2 handle keyboard images and gifs.

This commit is contained in:
Alex Hart
2023-07-18 12:51:07 -03:00
committed by Nicholas
parent b8f55f982f
commit f3fb5ccc3b
5 changed files with 98 additions and 32 deletions

View File

@@ -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)
}