Solution 1 :
Use https://github.com/zetbaitsu/Compressor library:
it will give almost lossless compression result.
val compressedImageFile = Compressor.compress(context, actualImageFile) {
default()
destination(myFile)
}
after compression you can delete your actual image and use new destination image file path.
Solution 2 :
read your JPG as bitmap and use
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, out);`
quality in range 95-100 won’t harm your quality (you already use JPG in fact), but will significantly reduce size
some docs in HERE
edit: this question is a duplicate…
Problem :
I have one image file of size 2mb named file.jpg and i want to decrease its size before sending it to server but i don’t want the image to get distorted. There are similar threads but most of them are converting the file into zip format which i don’t want to do.
So please help me out.
Comments
Comment posted by Cosmic Dev
i can’t use bitmap
Comment posted by blackapps
Ha ha @Cosmic Dev that Compressor library is using Bitmap too.
Comment posted by Cosmic Dev
ok but it is taking care of a lot of code: converting file to bitmap then compression then again writing back it to file.
Comment posted by snachmsm
well,
Comment posted by snachmsm
it is more convenient to implement third-party lib and more versatile, but this also takes few lines and you just strain your app with additional third-party code increasing your APK size. Your needs may be fulfilled with framework methods, which are supported from the beggining of Android, so I think implementing whole lib for just one small operation is unnecessary. But thats your choice, maybe features of this lib may be useful for you in other places in app or lib size isn’t significant