Skip to content

Commit

Permalink
[chore] #141 Bitmap 리사이징 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
Jokwanhee committed Apr 18, 2024
1 parent 70a8984 commit 20243c7
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package sopt.motivoo.data.repository

import android.graphics.Bitmap
import okhttp3.RequestBody.Companion.toRequestBody
import sopt.motivoo.data.datasource.remote.HomeDataSource
import sopt.motivoo.data.model.request.home.RequestMissionTodayDto
import sopt.motivoo.domain.entity.error.ResponseHandler
Expand All @@ -10,7 +9,7 @@ import sopt.motivoo.domain.entity.home.MissionChoiceData
import sopt.motivoo.domain.entity.home.MissionImageData
import sopt.motivoo.domain.error.UserErrorHandler
import sopt.motivoo.domain.repository.HomeRepository
import java.io.ByteArrayOutputStream
import sopt.motivoo.util.BitmapRequestBody
import javax.inject.Inject

class HomeRepositoryImpl @Inject constructor(
Expand Down Expand Up @@ -53,9 +52,7 @@ class HomeRepositoryImpl @Inject constructor(
}

override suspend fun uploadPhoto(url: String, bitmap: Bitmap): Unit? = try {
val outputStream = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.PNG, 80, outputStream)
val requestBody = outputStream.toByteArray().toRequestBody()
val requestBody = BitmapRequestBody(bitmap).create(50)
homeDataSource.uploadPhoto(url, requestBody)
} catch (e: Exception) {
null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ import sopt.motivoo.R
import sopt.motivoo.databinding.BottomSheetHomeBinding
import sopt.motivoo.presentation.home.HomePictureState
import sopt.motivoo.presentation.home.viewmodel.HomeViewModel
import sopt.motivoo.util.BitmapUtil
import sopt.motivoo.util.Constants.S3_BUCKET_NAME
import sopt.motivoo.util.UriManager
import sopt.motivoo.util.extension.createUriToBitmap

@AndroidEntryPoint
class HomeBottomSheetFragment : BottomSheetDialogFragment() {
Expand All @@ -39,6 +39,7 @@ class HomeBottomSheetFragment : BottomSheetDialogFragment() {
private val viewModel: HomeViewModel by viewModels()

var pictureUri: Uri? = null
private lateinit var bitmapUtil: BitmapUtil

private val isCameraPermissionResult =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
Expand All @@ -60,8 +61,10 @@ class HomeBottomSheetFragment : BottomSheetDialogFragment() {
registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess ->
if (isSuccess) {
binding.pvLoading.visibility = View.VISIBLE
pictureUri?.let {
viewModel.getMissionImage(S3_BUCKET_NAME, requireContext().createUriToBitmap(it))
pictureUri?.let { uri ->
bitmapUtil.createUriToBitmap(uri, size = 4)?.let { bitmap ->
viewModel.getMissionImage(S3_BUCKET_NAME, bitmap)
}
}
}
}
Expand Down Expand Up @@ -92,6 +95,7 @@ class HomeBottomSheetFragment : BottomSheetDialogFragment() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
bitmapUtil = BitmapUtil(requireContext())
setLayoutSize()
collectHomePictureState()
onClickTakePicture()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,32 +17,36 @@ import sopt.motivoo.R
import sopt.motivoo.databinding.DialogHomePhotoBinding
import sopt.motivoo.presentation.home.HomePictureState
import sopt.motivoo.presentation.home.viewmodel.HomeViewModel
import sopt.motivoo.util.BitmapUtil
import sopt.motivoo.util.Constants.S3_BUCKET_NAME
import sopt.motivoo.util.binding.BindingDialogFragment
import sopt.motivoo.util.extension.createUriToBitmap
import sopt.motivoo.util.extension.showToast

@AndroidEntryPoint
class HomePhotoDialogFragment :
BindingDialogFragment<DialogHomePhotoBinding>(R.layout.dialog_home_photo) {

private val viewModel: HomeViewModel by viewModels()
private lateinit var photoUri: Uri
private lateinit var bitmapUtil: BitmapUtil

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setLayoutSizeRatio(widthPercent = 1f, heightPercent = 1f)
bitmapUtil = BitmapUtil(requireContext())

val safeArgs: HomePhotoDialogFragmentArgs by navArgs()
photoUri = safeArgs.photoUri

binding.ivPhoto.load(photoUri)

binding.tvConfirm.setOnClickListener {
binding.pvLoading.visibility = View.VISIBLE
viewModel.getMissionImage(
S3_BUCKET_NAME,
requireContext().createUriToBitmap(safeArgs.photoUri)
)
bitmapUtil.createUriToBitmap(photoUri, size = 4)?.let { bitmap ->
binding.pvLoading.visibility = View.VISIBLE
viewModel.getMissionImage(
S3_BUCKET_NAME, bitmap
)
} ?: requireContext().showToast("createUriToBitmap is null")
}

viewLifecycleOwner.lifecycleScope.launch {
Expand Down

0 comments on commit 20243c7

Please sign in to comment.