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
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.Picture
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.MemoryFile
|
||||
import android.os.SharedMemory
|
||||
import android.util.Log
|
||||
import com.isolaatti.images.common.data.remote.ImagesApi
|
||||
import com.isolaatti.images.common.domain.entity.Image
|
||||
@ -13,7 +19,11 @@ import okhttp3.MultipartBody
|
||||
import okhttp3.RequestBody
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import retrofit2.awaitResponse
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
import java.io.OutputStream
|
||||
import java.io.OutputStreamWriter
|
||||
import javax.inject.Inject
|
||||
|
||||
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
|
||||
try {
|
||||
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))
|
||||
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) {
|
||||
val imageDto = response.body()
|
||||
if(imageDto == null) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user