android bitmapfun.zip,Compressor:一个Android图像压缩库

Compressor是一款轻量且强大的Android图片压缩库,能将大尺寸照片压缩为小体积图片,几乎不损失画质。通过Gradle依赖引入,可以自定义压缩参数如分辨率、质量、格式等。支持Kotlin协程,方便在不同线程中调用。博客提供了详细的代码示例展示如何使用Compressor进行图片压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Compressor

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f416e64726f6964253230417273656e616c2d436f6d70726573736f722d626c75652e7376673f7374796c653d666c617468747470733a2f2f7472617669732d63692e6f72672f7a65746261697473752f436f6d70726573736f722e7376673f6272616e63683d6d617374657268747470733a2f2f636f6465636f762e696f2f67682f7a65746261697473752f436f6d70726573736f722f6272616e63682f6d61737465722f67726170682f62616467652e737667

4565ac5455bd042f216d612aa85dc1e6.png Compressor is a lightweight and powerful android image compression library. Compressor will allow you to compress large photos into smaller sized photos with very less or negligible loss in quality of the image.

Gradle

dependencies {

implementation 'id.zelory:compressor:3.0.0'

}

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值