compresion de imagen con WEBP
This commit is contained in:
parent
5992f2a07a
commit
a1c8b49607
@ -1,7 +1,13 @@
|
|||||||
package com.isolaatti.images.common.data.repository
|
package com.isolaatti.images.common.data.repository
|
||||||
|
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
|
import android.graphics.Bitmap
|
||||||
|
import android.graphics.BitmapFactory
|
||||||
|
import android.graphics.Picture
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.MemoryFile
|
||||||
|
import android.os.SharedMemory
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.isolaatti.images.common.data.remote.ImagesApi
|
import com.isolaatti.images.common.data.remote.ImagesApi
|
||||||
import com.isolaatti.images.common.domain.entity.Image
|
import com.isolaatti.images.common.domain.entity.Image
|
||||||
@ -13,7 +19,11 @@ import okhttp3.MultipartBody
|
|||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody
|
||||||
import okhttp3.RequestBody.Companion.toRequestBody
|
import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
import retrofit2.awaitResponse
|
import retrofit2.awaitResponse
|
||||||
|
import java.io.ByteArrayOutputStream
|
||||||
|
import java.io.File
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
import java.io.OutputStream
|
||||||
|
import java.io.OutputStreamWriter
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class ImagesRepositoryImpl @Inject constructor(private val imagesApi: ImagesApi, private val contentResolver: ContentResolver) :
|
class ImagesRepositoryImpl @Inject constructor(private val imagesApi: ImagesApi, private val contentResolver: ContentResolver) :
|
||||||
@ -44,16 +54,23 @@ class ImagesRepositoryImpl @Inject constructor(private val imagesApi: ImagesApi,
|
|||||||
var imageInputStream: InputStream? = null
|
var imageInputStream: InputStream? = null
|
||||||
try {
|
try {
|
||||||
imageInputStream = contentResolver.openInputStream(imageUri)
|
imageInputStream = contentResolver.openInputStream(imageUri)
|
||||||
val imageBytes = imageInputStream?.readBytes()
|
val bitmap = BitmapFactory.decodeStream(imageInputStream)
|
||||||
|
|
||||||
if(imageBytes == null) {
|
if(bitmap == null) {
|
||||||
emit(Resource.Error(Resource.Error.ErrorType.InputError))
|
emit(Resource.Error(Resource.Error.ErrorType.InputError))
|
||||||
return@flow
|
return@flow
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d("ImagesRepository", "${imageBytes.size} bytes")
|
val outputStream = ByteArrayOutputStream()
|
||||||
|
|
||||||
val response = imagesApi.postImage(MultipartBody.Part.createFormData("file", name,imageBytes.toRequestBody()), name).awaitResponse()
|
if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) {
|
||||||
|
bitmap.compress(Bitmap.CompressFormat.WEBP, 50, outputStream)
|
||||||
|
} else {
|
||||||
|
bitmap.compress(Bitmap.CompressFormat.WEBP_LOSSY, 50, outputStream)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
val response = imagesApi.postImage(MultipartBody.Part.createFormData("file", name,outputStream.toByteArray().toRequestBody()), name).awaitResponse()
|
||||||
if(response.isSuccessful) {
|
if(response.isSuccessful) {
|
||||||
val imageDto = response.body()
|
val imageDto = response.body()
|
||||||
if(imageDto == null) {
|
if(imageDto == null) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user