gpt4 book ai didi

android - 如何将 bytearray 与 kotlin 中的 file.length() 进行比较?

转载 作者:行者123 更新时间:2023-11-29 02:17:42 24 4
gpt4 key购买 nike

  1. 我只需要发送小于 2 MB 的文件。我使用文件和位图。项目中使用了easyimage库。

  2. 当我除以 1024 时,如何比较以 kb 为单位返回的常规 imagefile.length()。但是位图图像返回字节 bitmap.bytecount

  3. 如何获取kb位图文件的值?它循环直到它完全压缩到 0 质量。

代码: var 质量 = 90

var imgKiloByteLength = imageFile.length() / 1024
var imgMegaByteLength = imgKiloByteLength / 1024 //returns in mb

if (imgKiloByteLength > 2048) {
while (imgKiloByteLength > 2048) { //reducing the quality until it comes under 2mb
var compressedBitmap = compressBitmap(bitmap, quality)
bitmap = compressedBitmap
Log.e("result",bitmap.getByteCount().toString())
Glide.with(this@EditProfileActivity).load(bitmap).into(profileImage)
Log.e("result", "image more than 2mb ${imgKiloByteLength}")
quality -= 10
}
} else {
Glide.with(this@EditProfileActivity).load(bitmap).into(profileImage)
Log.e("result", "image size ok ${imgKiloByteLength}")
}

我可以做什么?提前致谢。

最佳答案

此代码可以帮助您将位图文件压缩到最大大小

object BitmapUtils {
const val ONE_KIO = 1024
const val ONE_MIO = ONE_KIO * ONE_KIO

/**
* Compress, if needed, an image file to be lower than or equal to 1 Mio
*
* @param filePath Image file path
*
* @return Stream containing data of the compressed image. Can be null
*/
fun compressedImageFile(filePath: String): InputStream? {
var quality = 100
var inputStream: InputStream? = null
if (filePath.isNotEmpty()) {
var bufferSize = Integer.MAX_VALUE
val byteArrayOutputStream = ByteArrayOutputStream()
try {
val bitmap = BitmapFactory.decodeFile(filePath)
do {
if (bitmap != null) {
byteArrayOutputStream.reset()
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteArrayOutputStream)
bufferSize = byteArrayOutputStream.size()
logD { "quality: $quality -> length: $bufferSize" }
quality -= 10
}
} while (bufferSize > ONE_MIO)
inputStream = ByteArrayInputStream(byteArrayOutputStream.toByteArray())
byteArrayOutputStream.close()
} catch (e: Exception) {
logE { "Exception when compressing file image: ${e.message}" }
}
}
return inputStream
}
}

不关心logX方法,它们是我方便的日志方法

关于android - 如何将 bytearray 与 kotlin 中的 file.length() 进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59282058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com