尝试与Kotlin一起使用Zelory压缩器

我正在尝试对我上传到Firebase Storage的文件实施图像压缩。正常的图像选择和上传效果完美,但是我现在想实现图像压缩。我遇到了Zelory压缩器,正在尝试实现,但似乎无法正确使用代码。

我正在一个片段中使用它,当我尝试将位图加载到压缩器行中时,似乎在上下文中给出了错误:

尝试与Kotlin一起使用Zelory压缩器

我之前的代码是使用ImageUri并将其转换为压缩程序所需的文件路径。

   Year     yr.m.d       Date date.J Inches mm_SRS Max_Temp_F Max_Temp_C Min_Temp_F   Min_Temp_C Date.POSIX
1  1919 1919-01-01 1919-01-01      1      0      0         39   3.888889         26 -3.333333333 1919-01-01
2  1919 1919-01-02 1919-01-02      2      0      0         35   1.666667         19 -7.222222222 1919-01-02
3  1919 1919-01-03 1919-01-03      3      0      0         40   4.444444         14          -10 1919-01-03
4  1919 1919-01-04 1919-01-04      4      0      0         52  11.111111         20 -6.666666667 1919-01-04
5  1919 1919-01-05 1919-01-05      5      0      0         43   6.111111         20 -6.666666667 1919-01-05
6  1919 1919-01-06 1919-01-06      6      0      0         56  13.333333         31 -0.555555556 1919-01-06

mImageUri是我在选择并正常上传到Firebase时使用的。

我看过很多人尝试使用此代码的示例,但我看不到我在做什么错。这与我在片段中使用它有关吗?如果是这样,我不介意将布局更改为仅以常规布局而不是片段上传。

起初,我只是出于活动考虑而将val image_file_path = File(mImageUri.path) val ctx = activity!!.applicationContext val tempBitmap = Compressor.compress(ctx,image_file_path) 输入作为问题,但这并没有消除错误。有帮助吗?

f123engyu 回答:尝试与Kotlin一起使用Zelory压缩器

我通过不使用Zelory工具解决了此问题。它很复杂,并且找到了一个更“标准”的库来实现相同的目的。

实现压缩的方法是拍摄图像,转换为Bitmap并按照我发现的此链接中的说明进行操作:

https://android--code.blogspot.com/2018/04/android-kotlin-compress-bitmap-example.html

这是坦白的自我解释,我与代码的唯一区别是它们使用静态可绘制对象,而我必须将URI转换为位图。我通过使用以下行做到了这一点:

val bitmap = MediaStore.Images.Media.getBitmap(activity?.contentResolver,mImageUri)

在上面,我使用activity?是因为我在一个片段中执行了此操作。另外,mImageUri是一个伴随对象,在从手机库中进行选择后,我将其分配给URI。

其余内容均按链接显示。

祝其他尝试此方法的人好运。给您一种压缩感沿着这条路线,我能够使用WEBP将8MB的照片压缩为350kb。非常有效!

PS:在使用WEBP时,我按照上述压缩率设法应用了1%的质量,而没有太大的质量损失。即使将压缩图像下载到PC上,您也不会说它已被压缩。

本文链接:https://www.f2er.com/2609474.html

大家都在问