Refactor bitmap and make less copies
This commit is contained in:
parent
ad0729686b
commit
73fc84ad75
@ -18,6 +18,7 @@ import com.zomato.photofilters.FilterPack
|
|||||||
import com.zomato.photofilters.imageprocessors.Filter
|
import com.zomato.photofilters.imageprocessors.Filter
|
||||||
import com.zomato.photofilters.utils.ThumbnailItem
|
import com.zomato.photofilters.utils.ThumbnailItem
|
||||||
import com.zomato.photofilters.utils.ThumbnailsManager
|
import com.zomato.photofilters.utils.ThumbnailsManager
|
||||||
|
import org.pixeldroid.app.utils.bitmapFromUri
|
||||||
|
|
||||||
class FilterListFragment : Fragment() {
|
class FilterListFragment : Fragment() {
|
||||||
|
|
||||||
@ -56,19 +57,7 @@ class FilterListFragment : Fragment() {
|
|||||||
private fun displayImage(bitmap: Bitmap?) {
|
private fun displayImage(bitmap: Bitmap?) {
|
||||||
val r = Runnable {
|
val r = Runnable {
|
||||||
val tbImage: Bitmap = (if (bitmap == null) {
|
val tbImage: Bitmap = (if (bitmap == null) {
|
||||||
// TODO: Check that there is no crash for OpenGL reasons on newer versions of Android
|
bitmapFromUri(requireActivity().contentResolver, PhotoEditActivity.imageUri)
|
||||||
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
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Bitmap.createScaledBitmap(bitmap, 100, 100, false)
|
Bitmap.createScaledBitmap(bitmap, 100, 100, false)
|
||||||
})
|
})
|
||||||
|
@ -5,13 +5,10 @@ import android.app.AlertDialog
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.ImageDecoder
|
|
||||||
import android.graphics.Point
|
import android.graphics.Point
|
||||||
import android.graphics.drawable.BitmapDrawable
|
import android.graphics.drawable.BitmapDrawable
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.MediaStore
|
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View.GONE
|
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.BrightnessSubFilter
|
||||||
import com.zomato.photofilters.imageprocessors.subfilters.ContrastSubFilter
|
import com.zomato.photofilters.imageprocessors.subfilters.ContrastSubFilter
|
||||||
import com.zomato.photofilters.imageprocessors.subfilters.SaturationSubfilter
|
import com.zomato.photofilters.imageprocessors.subfilters.SaturationSubfilter
|
||||||
|
import org.pixeldroid.app.utils.bitmapFromUri
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
@ -116,18 +114,8 @@ class PhotoEditActivity : BaseActivity() {
|
|||||||
binding.tabs.setupWithViewPager(binding.viewPager)
|
binding.tabs.setupWithViewPager(binding.viewPager)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun loadImage() {
|
private fun loadImage() {
|
||||||
// TODO: Check that there is no crash for OpenGL reasons on newer versions of Android
|
originalImage = bitmapFromUri(contentResolver, imageUri)
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
compressedImage = resizeImage(originalImage!!)
|
compressedImage = resizeImage(originalImage!!)
|
||||||
compressedOriginalImage = compressedImage!!.copy(BITMAP_CONFIG, true)
|
compressedOriginalImage = compressedImage!!.copy(BITMAP_CONFIG, true)
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package org.pixeldroid.app.utils
|
package org.pixeldroid.app.utils
|
||||||
|
|
||||||
import android.content.ActivityNotFoundException
|
import android.content.*
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.content.SharedPreferences
|
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
|
import android.graphics.Bitmap
|
||||||
|
import android.graphics.ImageDecoder
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.provider.MediaStore
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
@ -63,6 +63,18 @@ fun normalizeDomain(domain: String): String {
|
|||||||
.trim(Char::isWhitespace)
|
.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{
|
fun BaseActivity.openUrl(url: String): Boolean{
|
||||||
|
|
||||||
val intent = CustomTabsIntent.Builder().build()
|
val intent = CustomTabsIntent.Builder().build()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user