parent
5f527ca9d7
commit
77931f6d8a
|
|
@ -14,7 +14,7 @@ import com.img.rabbit.utils.ImageUtils
|
||||||
import com.img.rabbit.utils.PhotoCutter
|
import com.img.rabbit.utils.PhotoCutter
|
||||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||||
import okhttp3.MultipartBody
|
import okhttp3.MultipartBody
|
||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import kotlin.text.ifEmpty
|
import kotlin.text.ifEmpty
|
||||||
|
|
@ -56,7 +56,7 @@ class CutoutViewModel : BaseViewModel() {
|
||||||
fun cutoutImageFromService(context: Context, uri: Uri, onResult: (isSuccess: Boolean, croppedBitmap: Bitmap?) -> Unit) {
|
fun cutoutImageFromService(context: Context, uri: Uri, onResult: (isSuccess: Boolean, croppedBitmap: Bitmap?) -> Unit) {
|
||||||
mLaunch {
|
mLaunch {
|
||||||
try {
|
try {
|
||||||
// 1. 获取并压缩图片为 PNG (后端示例中使用了 .png,可能只支持 PNG)
|
// 1. 获取并压缩图片为 PNG (.png/jpg/jpeg 只支持这三种格式,当前选择使用PNG)
|
||||||
val bitmap = ImageUtils.getBitmapFromUri(context, uri) ?: throw IOException("无法获取图片")
|
val bitmap = ImageUtils.getBitmapFromUri(context, uri) ?: throw IOException("无法获取图片")
|
||||||
val outputStream = java.io.ByteArrayOutputStream()
|
val outputStream = java.io.ByteArrayOutputStream()
|
||||||
// PNG 是无损的,质量参数 100 即可
|
// PNG 是无损的,质量参数 100 即可
|
||||||
|
|
@ -65,7 +65,7 @@ class CutoutViewModel : BaseViewModel() {
|
||||||
bitmap.recycle()
|
bitmap.recycle()
|
||||||
|
|
||||||
// 2. MediaType 修改为 image/png
|
// 2. MediaType 修改为 image/png
|
||||||
val requestFile = RequestBody.create("image/png".toMediaTypeOrNull(), compressedBytes)
|
val requestFile = compressedBytes.toRequestBody("image/png".toMediaTypeOrNull(),0,compressedBytes.size)
|
||||||
|
|
||||||
// 3. 构造 MultipartBody.Part,关键:强制给文件名加上 .png 后缀
|
// 3. 构造 MultipartBody.Part,关键:强制给文件名加上 .png 后缀
|
||||||
// 不要直接用 uri.lastPathSegment,除非你能确定它带后缀
|
// 不要直接用 uri.lastPathSegment,除非你能确定它带后缀
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue