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

简介: 做这个APP的想法,起源于两周前我堂妹突然转发给我了她的照片,因为她手上没有电脑不好调整图片的大小,希望我能帮她把照片的格式调成她需要的大小规格

前言

灵感与动力

灵感突现

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

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

在查看众多美图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方面要不要调整,以及是否需要增加新的功能,拭目以待吧!

相关文章
|
2月前
|
存储 缓存 编解码
Android经典面试题之图片Bitmap怎么做优化
本文介绍了图片相关的内存优化方法,包括分辨率适配、图片压缩与缓存。文中详细讲解了如何根据不同分辨率放置图片资源,避免图片拉伸变形;并通过示例代码展示了使用`BitmapFactory.Options`进行图片压缩的具体步骤。此外,还介绍了Glide等第三方库如何利用LRU算法实现高效图片缓存。
67 20
Android经典面试题之图片Bitmap怎么做优化
|
6月前
|
Android开发
Android通过手势(多点)缩放和拖拽图片
Android通过手势(多点)缩放和拖拽图片
53 4
|
6月前
|
Java Android开发
android 下载图片的问题
android 下载图片的问题
46 3
|
3月前
|
数据处理 开发工具 数据安全/隐私保护
Android平台RTMP推送|轻量级RTSP服务|GB28181接入之文字、png图片水印的精进之路
本文探讨了Android平台上推流模块中添加文字与PNG水印的技术演进。自2015年起,为了满足应急指挥及安防领域的需求,逐步发展出三代水印技术:第一代为静态文字与图像水印;第二代实现了动态更新水印内容的能力,例如实时位置与时间信息;至第三代,则优化了数据传输效率,直接使用Bitmap对象传递水印数据至JNI层,减少了内存拷贝次数。这些迭代不仅提升了用户体验和技术效率,也体现了开发者追求极致与不断创新的精神。
|
3月前
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
239 4
|
3月前
|
XML 前端开发 Android开发
Android经典实战之Kotlin中实现圆角图片和圆形图片
本文介绍两种实现圆角图像视图的方法。第一种是通过自定义Kotlin `AppCompatImageView`,重写`onDraw`方法使用`Canvas`和`Path`进行圆角剪裁。第二种利用Android Material库中的`ShapeableImageView`,简单配置即可实现圆角效果。两种方法均易于实现且提供动态调整圆角半径的功能。
73 0
|
5月前
|
JSON 编解码 Apache
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
64 1
|
5月前
|
Java Android开发
18. 【Android教程】图片控件 ImageView
18. 【Android教程】图片控件 ImageView
86 4
|
5月前
|
前端开发 Java API
Android系统中读写和显示图片
Android系统中读写和显示图片
46 0
|
5月前
|
XML Java API
54. 【Android教程】图片资源:Drawable
54. 【Android教程】图片资源:Drawable
86 0
下一篇
无影云桌面