gru110110110 / biscuit Goto Github PK
View Code? Open in Web Editor NEW一款Android 便捷高效图片压缩库,更多自定义,灵活配置,缩放部分逆向微信朋友圈压缩效果推算得来,效果非常接近!
一款Android 便捷高效图片压缩库,更多自定义,灵活配置,缩放部分逆向微信朋友圈压缩效果推算得来,效果非常接近!
缓存文件并没有自动删除,得自己手动删,但是图片保存的位置也是缓存所在位置,会一起删掉
这块缓存处理是不是有点问题?
图片反而大了 20多k, 要不就没有变化
有内存泄漏问题。压缩5个图片, 不关闭窗口,每次批量压缩,内存差不多 15-20Mb增。
图片大小 20MB , 10MB ,3MB 1MB
写了System.gc 没有很大的作用。
Oppo 手机 高清拍照 ,压缩失败。
E/ImageCompressor: original size : 12147 KB 12-26 17:22:14.757 6632-6645/com.feihong.tupian D/dalvikvm: JIT code cache reset in 0 ms (0 bytes 1/0) 12-26 17:22:14.757 6632-6645/com.feihong.tupian D/dalvikvm: GC_FOR_ALLOC freed 300K, 11% free 3049K/3416K, paused 5ms, total 5ms 12-26 17:22:14.757 6632-6645/com.feihong.tupian D/dalvikvm: GC_FOR_ALLOC freed 8K, 11% free 3056K/3416K, paused 2ms, total 2ms 12-26 17:22:14.757 6632-6645/com.feihong.tupian I/dalvikvm-heap: Forcing collection of SoftReferences for 207667212-byte allocation 12-26 17:22:14.767 6632-6645/com.feihong.tupian D/dalvikvm: GC_BEFORE_OOM freed 2K, 11% free 3054K/3416K, paused 6ms, total 6ms 12-26 17:22:14.767 6632-6645/com.feihong.tupian E/dalvikvm-heap: Out of memory on a 207667212-byte allocation. 12-26 17:22:14.767 6632-6645/com.feihong.tupian I/dalvikvm: "HandlerExecutor" prio=10 tid=10 RUNNABLE 12-26 17:22:14.767 6632-6645/com.feihong.tupian I/dalvikvm: | group="main" sCount=0 dsCount=0 obj=0x94f808f0 self=0xb8c4ed40 12-26 17:22:14.767 6632-6645/com.feihong.tupian I/dalvikvm: | sysTid=6645 nice=0 sched=0/0 cgrp=[fopen-error:2] handle=-1194938432 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: | state=R schedstat=( 0 0 0 ) utm=0 stm=1 core=0 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:613) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:589) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:369) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at com.seek.biscuit.ImageCompressor.compress(ImageCompressor.java:73) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at com.seek.biscuit.ImageCompressor.run(ImageCompressor.java:186) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at com.seek.biscuit.HandlerExecutor$CompressHandler.handleMessage(HandlerExecutor.java:39) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at android.os.Handler.dispatchMessage(Handler.java:102) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at android.os.Looper.loop(Looper.java:136) 12-26 17:22:14.777 6632-6645/com.feihong.tupian I/dalvikvm: at android.os.HandlerThread.run(HandlerThread.java:61) 12-26 17:22:14.777 6632-6645/com.feihong.tupian D/skia: --- decoder->decode returned false 12-26 17:22:14.777 6632-6645/com.feihong.tupian E/ImageCompressor: no enough memory! 12-26 17:22:14.787 6632-6632/com.feihong.tupian D/图压缩: onError() called with: e = [com.seek.biscuit.CompressException: no enough memory!]
我的解决办法是;
options.inPreferredConfig = Bitmap.Config.RGB_565; options.inDither = true;
算法很好,希望加入压缩到指定大小的功能
Listener只是监听单张图片压缩完成,批量压缩时就会多次调用 listener,是否有批量压缩的listener
不知道能否支持同步的方式去压缩,或者跟rxjava结合图片上传去使用
can`nt save exif info!
public ImagePath(String path) {
this.path = path;
int typeSplit = path.lastIndexOf(".");
int nameSplit = path.lastIndexOf("/");
if (typeSplit != -1 && nameSplit != -1) {
this.name = path.substring(nameSplit + 1, typeSplit - 1);
}
if (typeSplit != -1) {
this.type = path.substring(typeSplit, path.length());
}
}
中 this.name = path.substring(nameSplit + 1, typeSplit - 1); 会导致文件名的最后一个字母被删掉。。。能尽快修复吗?现在通过library用
希望可以添加这个压缩,JNI调用libjpeg库压缩,了解了下这个压缩后的大小和清晰度都更好,但是压缩速度慢,尤其发布类似朋友圈的多图功能,选择多图后压缩要很长时间,技术有限,希望借助楼主的能力实现下
请问Biscuit与Luban在性能上有过比较吗?毕竟功能上比较相似。
再有就是能否像Luban一样提供压缩算法步骤,这样方便在ios上也实现相同的图片压缩方式
使输出的图片的尺寸一致
从相册选择几张相片进行压缩,压缩前后,内存使用从4-50M一下子飙升到150多M,导致部分照片报“no enough memory”错误导致压缩失败,内存小的手机会直接崩溃
if (options.outHeight <= 0 || options.outWidth <= 0) {
generateException("an error occurs when trying to decode!");
return false;
}
直接走这一步了。。。 华为p9 6.0系统
返回的路径ArrayList mSuccessPaths = new ArrayList()顺序与传入的一样吗?
只能自定义路径,不能自定义文件名,是否可以提供自定义文件名方法
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.