注册

“千变万化”——神奇的Android图片规格调整器(构思篇)


前言


灵感与动力


灵感突现


做这个APP的想法,起源于两周前我堂妹突然转发给我了她的照片,因为她手上没有电脑不好调整图片的大小,希望我能帮她把照片的格式调成她需要的大小规格,我当时第一个想法是用win电脑自带的图片功能去给她限制大小,后面发现ps能保留更多图片细节和不同的采样方式,所以又使用ps给她调整了一下,发给了她,结果她也很满意,可是这又引发了我的思考,手机真的不好调整吗?


1d02b2584977cb768b16ecd996e92e6.jpg


f7b34fafcab1c00e8d590a7865855b3.png


00c5535a7e3fc4a7a104680b4cf6f0f.jpg


fa475d410ff25cb646cda4a652a1581.png


在查看众多美图APP如美图秀秀之类的,发现它们都有许多复杂的美颜功能,贴图功能,但唯独找不到指定宽高输出图片这个功能,它们也和手机自带相机一样,只有着为数不多的几个固定高宽比输出。


点燃动力


机缘巧合,由于当时工作上的业务正好用到了bitmap这个类,发现其实手机理论上也能实现指定高宽去输出图片,所以萌发了去做一个可以指定高宽的图片工具APP去练手,也因此引出了一堆我平常公司业务开发所忽略的问题,更是让我想通过这个简单工具去提升自己!


正篇


难得糊涂


怪圈


通过近一周的下班回家的编写,这才领悟到什么是纸上得来终觉浅,还是要应到那句“绝知此事要躬行”上的,我以为就是使用这个bitmap的方法去写一个函数然后用dialog弹窗让用户去选择图片调用它即可:


public Bitmap getNewBitmap(Bitmap bitmap, int newWidth ,int newHeight){
// 获区bitmap图片的宽高.
int width = bitmap.getWidth();
int height = bitmap.getHeight();
// 计算调整后与调整前的缩放比例.
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 取得想要缩放的matrix参数.
Matrix matrix = new Matrix();
//缩放坐标轴
matrix.postScale(scaleWidth, scaleHeight);
// 得到新的图片.
Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
return newBitmap;
}


结果发现这个方法倒是没什么问题,但dialog弹窗选择图片把我折磨坏了,然后一直就绕进了怪圈:

我想点击就去选择图片,结果发现自己用图片的绝对地址一直没有权限


恍然大悟


几个晚上过去我才终于想起来我应该求助与网上的大神博客,首先我先去了我们安卓著名大佬鸿洋博客搜了一下,在发现有自定义view的教程后又看了好几天才想起自己是来找打开相册获取图片的,发现正确的打开图库方式应该是URI获取,而不是直接找文件地址去拿图片,这已经涉及到用户安全的问题。


后记


通过构思我大概确定了这个APP的核心功能区域,也解决了一些小问题,但我还是没有来得及去实现,所以下一篇我将从构思过渡到完整逻辑代码的实现,至少先可以拿到手机上使用,然后再去看看UI方面要不要调整,以及是否需要增加新的功能,拭目以待吧!


作者:ObliviateOnline
来源:juejin.cn/post/7149199341616365604

0 个评论

要回复文章请先登录注册