- Fix unspecified dependency in maven central artifacts https://github.com/zetbaitsu/Compressor/issues/179
Compressor
zetbaitsu更新放缓Android 图片压缩库,用 Kotlin 协程在后台把照片压到指定大小或分辨率,省内存也省流量。
An android image compression library.
v3.0.1发布于 2021-03-22 14:50 UTC7,230star +1 / 7 天962fork同步于 2026-11-10 05:32 UTC
README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。
硬件要求
README 没有说明硬件要求。
项目说明
这个项目的说明还在生成中,先参考下面「最近发版」和 README。
- v3.0.1最新正式版2021-03-22 · 2021-03-22 14:50 UTC
- v2.1.12021-03-22 · 2021-03-22 14:49 UTC
查看更新说明
- Fix unspecified dependency in maven central artifacts https://github.com/zetbaitsu/Compressor/issues/179
- v3.0.0v3.002020-01-26 · 2020-01-26 02:35 UTC
查看更新说明
- Kotlin Coroutines Based
- Composable constraint
用户点评
登录用户的真实使用记录,可按版本和硬件筛选共 0 条
还没有人点评。第一个说出真实体验的人最有价值。
Compressor
Gradle
dependencies {
implementation 'id.zelory:compressor:3.0.1'
}
Let's compress the image size!
Compress Image File
val compressedImageFile = Compressor.compress(context, actualImageFile)
Compress Image File to specific destination
val compressedImageFile = Compressor.compress(context, actualImageFile) {
default()
destination(myFile)
}
I want custom Compressor!
Using default constraint and custom partial of it
val compressedImageFile = Compressor.compress(context, actualImageFile) {
default(width = 640, format = Bitmap.CompressFormat.WEBP)
}
Full custom constraint
val compressedImageFile = Compressor.compress(context, actualImageFile) {
resolution(1280, 720)
quality(80)
format(Bitmap.CompressFormat.WEBP)
size(2_097_152) // 2 MB
}
Using your own custom constraint
class MyLowerCaseNameConstraint: Constraint {
override fun isSatisfied(imageFile: File): Boolean {
return imageFile.name.all { it.isLowerCase() }
}
override fun satisfy(imageFile: File): File {
val destination = File(imageFile.parent, imageFile.name.toLowerCase())
imageFile.renameTo(destination)
return destination
}
}
val compressedImageFile = Compressor.compress(context, actualImageFile) {
constraint(MyLowerCaseNameConstraint()) // your own constraint
quality(80) // combine with compressor constraint
format(Bitmap.CompressFormat.WEBP)
}
You can create your own extension too
fun Compression.lowerCaseName() {
constraint(MyLowerCaseNameConstraint())
}
val compressedImageFile = Compressor.compress(context, actualImageFile) {
lowerCaseName() // your own extension
quality(80) // combine with compressor constraint
format(Bitmap.CompressFormat.WEBP)
}
Compressor now is using Kotlin coroutines!
Calling Compressor should be done from coroutines scope
// e.g calling from activity lifecycle scope
lifecycleScope.launch {
val compressedImageFile = Compressor.compress(context, actualImageFile)
}
// calling from global scope
GlobalScope.launch {
val compressedImageFile = Compressor.compress(context, actualImageFile)
}
Run Compressor in main thread
val compressedImageFile = Compressor.compress(context, actualImageFile, Dispatchers.Main)
Old version
Please read this readme
License
Copyright (c) 2016 Zetra.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.