工具特性:
压缩情况对比:
ImageInfo | compressTool | |
---|---|---|
1.50MB (1920x1080) | 47.32kb(1280*720) | 51.4kb(1280*720) |
微信压缩图片样例:
这个是采用该库压缩后的图片:
原程序段已介绍完毕。根据记录,原作者已于五年前停止更新了该项目,而最近一次大型更新为添加了批量压缩的功能。
笔者在阅读源代码与测试程序中发现,原作者编写的代码与程序存在以下问题。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK)
{
if (data == null)
{
showError("打开失败");
return;
}
try
{
oldFile = getTempFile(this, data.getData());
filePath = oldFile.getAbsolutePath();
mainImageOld.setImageBitmap(BitmapFactory.decodeFile(oldFile.getAbsolutePath()));
mainTextOld.setText(String.format("Size : %s", getReadableFileSize(oldFile.length())));
}
catch (IOException e)
{
showError("读图失败");
e.printStackTrace();
}
}
}
private void handleOpenError() {
showError("打开失败");
}
if (data != null && data.getData() != null) {
//省略无用代码段
...原方法...
} else {
handleOpenError();
}
try (InputStream inputStream = context.getContentResolver().openInputStream(uri);
FileOutputStream out = new FileOutputStream(tempFile)) {
if (inputStream != null) {
copy(inputStream, out);
}
} catch (IOException e) {
e.printStackTrace();
}
无用注释略过不表,有兴趣可以前往原作者github页面下载master文件查看
笔者通过以上几个角度对软件进行了维护修复的二次开发。
虽然对于软件的底层算法,笔者暂且没有能力进行维护,但是对于使用过程中存在的恶性bug笔者已经进行了修复。
在修复这个项目中恶性bug的过程中,笔者深刻体会到了以下三个方面的重要性。
写在最后与展望:本项目开源于github,在修复这些恶性bug的过程中,笔者认为开源对于一个软件寿命的延续起到了至关重要的作用。即使这份软件原作者已在五年前停止更新,但由于开源的性质,也使得笔者有机会进行二次开发。笔者在之后更会对于软件的其他缺点进行开发,笔者认为软件的ui界面已经过时,对于Android设备的异型屏适配也不够完善。笔者之后将通过这两个角度对于软件进行进一步的更新,会同步于笔者的github与博客园进行发表供给阅读。
参与评论
手机查看
返回顶部