Skip to content
Snippets Groups Projects
Commit 439005f8 authored by Bernardus Willson's avatar Bernardus Willson
Browse files

Merge branch 'staging' into 'fix/navigation'

fix: twibbon camera

See merge request !17
parents fc116f23 910be803
Branches
1 merge request!17fix: twibbon camera
...@@ -4,7 +4,9 @@ import CameraAdapter ...@@ -4,7 +4,9 @@ import CameraAdapter
import ImageCaptureCallback import ImageCaptureCallback
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.graphics.Matrix import android.graphics.Matrix
import android.graphics.RectF
import android.media.ExifInterface import android.media.ExifInterface
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
...@@ -101,7 +103,7 @@ class EditProfile : Fragment(), ImageCaptureCallback { ...@@ -101,7 +103,7 @@ class EditProfile : Fragment(), ImageCaptureCallback {
val exif = ExifInterface(photoFile.absolutePath) val exif = ExifInterface(photoFile.absolutePath)
val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL) val orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL)
val rotatedBitmap = rotateBitmap(bitmap, orientation) val rotatedBitmap = rotateBitmap(bitmap, orientation)
binding.cpCameraPreview.setImageBitmap(rotatedBitmap) scaleCenterCrop(rotatedBitmap)
binding.cpCameraPreview.visibility = View.VISIBLE binding.cpCameraPreview.visibility = View.VISIBLE
binding.previewView.visibility = View.GONE binding.previewView.visibility = View.GONE
...@@ -110,6 +112,31 @@ class EditProfile : Fragment(), ImageCaptureCallback { ...@@ -110,6 +112,31 @@ class EditProfile : Fragment(), ImageCaptureCallback {
) )
} }
fun scaleCenterCrop(source: Bitmap) {
val sourceWidth = source.width
val sourceHeight = source.height
val targetWidth = 350
val targetHeight = 350
val xScale = targetWidth.toFloat() / sourceWidth
val yScale = targetHeight.toFloat() / sourceHeight
val scale = Math.max(xScale, yScale)
val scaledWidth = scale * sourceWidth
val scaledHeight = scale * sourceHeight
val left = (targetWidth - scaledWidth) / 2
val top = (targetHeight - scaledHeight) / 2
val targetRect = RectF(left, top, left + scaledWidth, top + scaledHeight)
val dest = Bitmap.createBitmap(targetWidth, targetHeight, source.config)
val canvas = Canvas(dest)
canvas.drawBitmap(source, null, targetRect, null)
binding.cpCameraPreview.setImageBitmap(dest)
}
private fun rotateBitmap(bitmap: Bitmap, orientation: Int): Bitmap { private fun rotateBitmap(bitmap: Bitmap, orientation: Int): Bitmap {
val matrix = Matrix() val matrix = Matrix()
when (orientation) { when (orientation) {
......
...@@ -9,25 +9,27 @@ ...@@ -9,25 +9,27 @@
android:layout_height="match_parent"> android:layout_height="match_parent">
<!-- TODO: Replace ImageView with teuing naon, help Bew --> <!-- TODO: Replace ImageView with teuing naon, help Bew -->
<ImageView <androidx.camera.view.PreviewView
android:id="@+id/cpCameraPreview"
android:layout_width="350dp" android:layout_width="350dp"
android:layout_height="350dp" android:layout_height="350dp"
android:id="@+id/previewView"
app:layout_constraintTop_toTopOf="@id/ivTwibbon" app:layout_constraintTop_toTopOf="@id/ivTwibbon"
app:layout_constraintBottom_toBottomOf="@id/ivTwibbon" app:layout_constraintBottom_toBottomOf="@id/ivTwibbon"
app:layout_constraintStart_toStartOf="@id/ivTwibbon" app:layout_constraintStart_toStartOf="@id/ivTwibbon"
app:layout_constraintEnd_toEndOf="@id/ivTwibbon" app:layout_constraintEnd_toEndOf="@id/ivTwibbon"/>
android:src="@drawable/default_profile"
android:visibility="invisible" />
<androidx.camera.view.PreviewView <ImageView
android:id="@+id/cpCameraPreview"
android:layout_width="350dp" android:layout_width="350dp"
android:layout_height="350dp" android:layout_height="350dp"
android:id="@+id/previewView"
app:layout_constraintTop_toTopOf="@id/ivTwibbon" app:layout_constraintTop_toTopOf="@id/ivTwibbon"
app:layout_constraintBottom_toBottomOf="@id/ivTwibbon" app:layout_constraintBottom_toBottomOf="@id/ivTwibbon"
app:layout_constraintStart_toStartOf="@id/ivTwibbon" app:layout_constraintStart_toStartOf="@id/ivTwibbon"
app:layout_constraintEnd_toEndOf="@id/ivTwibbon"/> app:layout_constraintEnd_toEndOf="@id/ivTwibbon"
android:src="@drawable/default_profile"
android:visibility="invisible"
android:scaleType="fitCenter"
android:adjustViewBounds="true"/>
<ImageView <ImageView
android:id="@+id/ivTwibbon" android:id="@+id/ivTwibbon"
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment