diff --git a/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/FilterListFragment.kt b/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/FilterListFragment.kt index 39540f7a..1d02bbc7 100644 --- a/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/FilterListFragment.kt +++ b/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/FilterListFragment.kt @@ -18,6 +18,7 @@ import com.zomato.photofilters.FilterPack import com.zomato.photofilters.imageprocessors.Filter import com.zomato.photofilters.utils.ThumbnailItem import com.zomato.photofilters.utils.ThumbnailsManager +import org.pixeldroid.app.utils.bitmapFromUri class FilterListFragment : Fragment() { @@ -56,19 +57,7 @@ class FilterListFragment : Fragment() { private fun displayImage(bitmap: Bitmap?) { val r = Runnable { val tbImage: Bitmap = (if (bitmap == null) { - // TODO: Check that there is no crash for OpenGL reasons on newer versions of Android - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - // Honor EXIF orientation if API >= 28 - ImageDecoder.decodeBitmap(ImageDecoder - .createSource(requireActivity().contentResolver, PhotoEditActivity.imageUri!!)) - .copy(Bitmap.Config.ARGB_8888,true) - } else { - // Ignore EXIF orientation otherwise - MediaStore.Images.Media.getBitmap( - requireActivity().contentResolver, - PhotoEditActivity.imageUri - ) - } + bitmapFromUri(requireActivity().contentResolver, PhotoEditActivity.imageUri) } else { Bitmap.createScaledBitmap(bitmap, 100, 100, false) }) diff --git a/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/PhotoEditActivity.kt b/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/PhotoEditActivity.kt index 1bbbe420..ca0847db 100644 --- a/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/PhotoEditActivity.kt +++ b/app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/PhotoEditActivity.kt @@ -5,13 +5,10 @@ import android.app.AlertDialog import android.content.Intent import android.content.pm.PackageManager import android.graphics.Bitmap -import android.graphics.ImageDecoder import android.graphics.Point import android.graphics.drawable.BitmapDrawable import android.net.Uri -import android.os.Build import android.os.Bundle -import android.provider.MediaStore import android.view.Menu import android.view.MenuItem import android.view.View.GONE @@ -30,6 +27,7 @@ import com.zomato.photofilters.imageprocessors.Filter import com.zomato.photofilters.imageprocessors.subfilters.BrightnessSubFilter import com.zomato.photofilters.imageprocessors.subfilters.ContrastSubFilter import com.zomato.photofilters.imageprocessors.subfilters.SaturationSubfilter +import org.pixeldroid.app.utils.bitmapFromUri import java.io.File import java.io.IOException import java.io.OutputStream @@ -116,18 +114,8 @@ class PhotoEditActivity : BaseActivity() { binding.tabs.setupWithViewPager(binding.viewPager) } - private fun loadImage() { - // TODO: Check that there is no crash for OpenGL reasons on newer versions of Android - originalImage = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - // Honor EXIF orientation if API >= 28 - ImageDecoder - .decodeBitmap(ImageDecoder.createSource(contentResolver, imageUri!!)) - .copy(BITMAP_CONFIG,true) - } else { - // Ignore EXIF orientation otherwise - MediaStore.Images.Media.getBitmap(contentResolver, imageUri) - } + originalImage = bitmapFromUri(contentResolver, imageUri) compressedImage = resizeImage(originalImage!!) compressedOriginalImage = compressedImage!!.copy(BITMAP_CONFIG, true) diff --git a/app/src/main/java/org/pixeldroid/app/utils/Utils.kt b/app/src/main/java/org/pixeldroid/app/utils/Utils.kt index 8769881b..0cf84d4f 100644 --- a/app/src/main/java/org/pixeldroid/app/utils/Utils.kt +++ b/app/src/main/java/org/pixeldroid/app/utils/Utils.kt @@ -1,13 +1,13 @@ package org.pixeldroid.app.utils -import android.content.ActivityNotFoundException -import android.content.Context -import android.content.Intent -import android.content.SharedPreferences +import android.content.* import android.content.res.Resources +import android.graphics.Bitmap +import android.graphics.ImageDecoder import android.net.ConnectivityManager import android.net.Uri import android.os.Build +import android.provider.MediaStore import android.util.DisplayMetrics import android.view.WindowManager import androidx.appcompat.app.AppCompatDelegate @@ -63,6 +63,18 @@ fun normalizeDomain(domain: String): String { .trim(Char::isWhitespace) } +fun bitmapFromUri(contentResolver: ContentResolver, uri: Uri?): Bitmap = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + ImageDecoder + .decodeBitmap( + ImageDecoder.createSource(contentResolver, uri!!) + ) + { decoder, _, _ -> decoder.isMutableRequired = true } + } else { + //FIXME EXIF orientation is ignored by getBitmap, respect it manually? + MediaStore.Images.Media.getBitmap(contentResolver, uri) + } + fun BaseActivity.openUrl(url: String): Boolean{ val intent = CustomTabsIntent.Builder().build()