Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
PixelDroid
PixelDroid
Commits
4f870771
Commit
4f870771
authored
Sep 25, 2021
by
Matthieu
Browse files
Merge branch 'master' into notifications
parents
2fe37a16
717ed496
Pipeline
#813
failed with stages
in 15 minutes and 29 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/FilterListFragment.kt
View file @
4f870771
package
org.pixeldroid.app.postCreation.photoEdit
import
android.graphics.Bitmap
import
android.graphics.ImageDecoder
import
android.os.Build
import
android.os.Bundle
import
android.provider.MediaStore
import
android.util.TypedValue
...
...
@@ -16,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
()
{
...
...
@@ -54,17 +57,7 @@ class FilterListFragment : Fragment() {
private
fun
displayImage
(
bitmap
:
Bitmap
?)
{
val
r
=
Runnable
{
val
tbImage
:
Bitmap
=
(
if
(
bitmap
==
null
)
{
// TODO: Shouldn't use deprecated API on newer versions of Android,
// but the proper way to do it seems to crash for OpenGL reasons
//if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
// ImageDecoder.decodeBitmap(
// ImageDecoder.createSource(requireActivity().contentResolver, PhotoEditActivity.imageUri!!))
//} else {
MediaStore
.
Images
.
Media
.
getBitmap
(
requireActivity
().
contentResolver
,
PhotoEditActivity
.
imageUri
)
//}
bitmapFromUri
(
requireActivity
().
contentResolver
,
PhotoEditActivity
.
imageUri
)
}
else
{
Bitmap
.
createScaledBitmap
(
bitmap
,
100
,
100
,
false
)
})
...
...
app/src/main/java/org/pixeldroid/app/postCreation/photoEdit/PhotoEditActivity.kt
View file @
4f870771
...
...
@@ -9,7 +9,6 @@ import android.graphics.Point
import
android.graphics.drawable.BitmapDrawable
import
android.net.Uri
import
android.os.Bundle
import
android.provider.MediaStore
import
android.view.Menu
import
android.view.MenuItem
import
android.view.View.GONE
...
...
@@ -28,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
...
...
@@ -114,9 +114,9 @@ class PhotoEditActivity : BaseActivity() {
binding
.
tabs
.
setupWithViewPager
(
binding
.
viewPager
)
}
private
fun
loadImage
()
{
originalImage
=
MediaStore
.
Images
.
Media
.
getBitmap
(
contentResolver
,
imageUri
)
originalImage
=
bitmapFromUri
(
contentResolver
,
imageUri
)
compressedImage
=
resizeImage
(
originalImage
!!
)
compressedOriginalImage
=
compressedImage
!!
.
copy
(
BITMAP_CONFIG
,
true
)
filteredImage
=
compressedImage
!!
.
copy
(
BITMAP_CONFIG
,
true
)
...
...
app/src/main/java/org/pixeldroid/app/utils/Utils.kt
View file @
4f870771
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.graphics.Matrix
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
import
androidx.browser.customtabs.CustomTabsIntent
import
androidx.exifinterface.media.ExifInterface
import
androidx.fragment.app.Fragment
import
androidx.lifecycle.DefaultLifecycleObserver
import
androidx.lifecycle.LifecycleOwner
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
org.pixeldroid.app.R
import
okhttp3.HttpUrl
import
org.pixeldroid.app.R
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
@@ -63,6 +65,47 @@ 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
{
val
bitmap
=
MediaStore
.
Images
.
Media
.
getBitmap
(
contentResolver
,
uri
)
modifyOrientation
(
bitmap
!!
,
contentResolver
,
uri
!!
)
}
fun
modifyOrientation
(
bitmap
:
Bitmap
,
contentResolver
:
ContentResolver
,
uri
:
Uri
):
Bitmap
{
val
inputStream
=
contentResolver
.
openInputStream
(
uri
)
!!
val
ei
=
ExifInterface
(
inputStream
)
return
when
(
ei
.
getAttributeInt
(
ExifInterface
.
TAG_ORIENTATION
,
ExifInterface
.
ORIENTATION_UNDEFINED
))
{
ExifInterface
.
ORIENTATION_ROTATE_90
->
bitmap
.
rotate
(
90f
)
ExifInterface
.
ORIENTATION_ROTATE_180
->
bitmap
.
rotate
(
180f
)
ExifInterface
.
ORIENTATION_ROTATE_270
->
bitmap
.
rotate
(
270f
)
ExifInterface
.
ORIENTATION_FLIP_HORIZONTAL
->
bitmap
.
flip
(
horizontal
=
true
,
vertical
=
false
)
ExifInterface
.
ORIENTATION_FLIP_VERTICAL
->
bitmap
.
flip
(
horizontal
=
false
,
vertical
=
true
)
else
->
bitmap
}
}
fun
Bitmap
.
rotate
(
degrees
:
Float
):
Bitmap
{
val
matrix
=
Matrix
()
matrix
.
postRotate
(
degrees
)
return
Bitmap
.
createBitmap
(
this
,
0
,
0
,
width
,
height
,
matrix
,
true
)
}
fun
Bitmap
.
flip
(
horizontal
:
Boolean
,
vertical
:
Boolean
):
Bitmap
{
val
matrix
=
Matrix
()
matrix
.
preScale
(
if
(
horizontal
)
-
1f
else
1f
,
if
(
vertical
)
-
1f
else
1f
)
return
Bitmap
.
createBitmap
(
this
,
0
,
0
,
width
,
height
,
matrix
,
true
)
}
fun
BaseActivity
.
openUrl
(
url
:
String
):
Boolean
{
val
intent
=
CustomTabsIntent
.
Builder
().
build
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment