图片组件库选型

2018年开始使用知乎的图片库Matisse 0.5.2 bate4版本,出现了Android10手机崩溃的情况,Android9上并无此现象,安装腾讯bugly发现问题
Caused by java.lang.IllegalArgumentException: Invalid column COUNT(*) AS count
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
at android.content.ContentProviderProxy.query(ContentProviderProxy.java:423)
at android.content.ContentResolver.query(ContentResolver.java:963)
at android.content.ContentResolver.query(ContentResolver.java:898)
嗯是Android10存储变更造成的
更新至Matisse 0.5.3 bate3版本图库崩溃问题解决了,但出现了Android10拍照无返回的情况。
我看了看源码,发现拍照这块没对10进行区分,都按照FileProvider进行处理。
于是我的解决方案是将拍照和图片库解耦,图片库继续使用Matisse 0.5.3 bate3,拍照自己写。
但这事没完,Matisse 0.5.3 bate4迟迟没有动静我开始调研新的图片库了。
为啥不自己写一个?以来人手不多,自己造轮子测试量也没那么大,不如现成的安全。
选择标准:稳定维护,看看最近一次提交是Android10发布之后的时间到最近。star量不能低于500,选出了20来个进行测评,结果发现很多都不维护了,体验到开发周期的毒打。

直接说结果:
最后测试过了两个图片库:HuanTanSheng/EasyPhotos和 LuckSiege/PictureSelector
而因为使用了扫码库而最先考虑的BGAPhotoPicker-Android在适配Android9就失败了
看到有人说需要在
Manifest中的application属性里面设置android:requestLegacyExternalStorage=“true”
我想了想11也快发布了,这种过渡性设置,过几个月还要换回去,还需要递增版本号就挺苦的,算了吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、设计思路 在线图片应用程序是一个典型的前后端分离的 web 应用程序。其中,后端使用 Spring Boot 框架实现,前端使用 Vue.js 实现,数据存储使用 MySQL 数据。 本应用程序主要包括以下模块: 1. 用户认证模块 用户认证模块主要负责用户的注册、登录和注销功能。用户可以通过注册功能创建账号,通过登录功能使用账号登录应用程序,注销功能用于注销已登录的账号。 2. 图片上传模块 图片上传模块主要负责用户上传图片的功能。用户可以通过该模块上传图片,并为图片添加标签和描述信息。 3. 图片检索模块 图片检索模块主要负责用户检索图片的功能。用户可以通过该模块输入关键字进行图片检索,获取符合条件的图片列表。 4. 图片展示模块 图片展示模块主要负责将符合条件的图片列表展示给用户。用户可以通过该模块查看图片详细信息,并下载图片。 二、技术选型 1. 后端技术选型 - Spring Boot:主要用于实现后端接口,并处理用户请求。 - Spring Security:用于实现用户认证和鉴权。 - MyBatis:用于实现数据访问层。 - MySQL:用于存储应用程序的数据。 2. 前端技术选型 - Vue.js:用于实现前端页面,并与后端接口交互。 - Element UI:用于实现前端页面的 UI 组件。 - Axios:用于实现前后端数据交互。 三、详细设计 1. 数据设计 本应用程序的数据主要包括以下表: - user:存储用户信息,包括用户 ID、用户名、密码等。 - image:存储图片信息,包括图片 ID、图片 URL、图片描述等。 - tag:存储图片标签信息,包括标签 ID、标签名称等。 - image_tag:存储图片标签关联信息,包括图片 ID、标签 ID 等。 2. 后端设计 后端主要包括以下模块: - 用户认证模块:实现用户注册、登录和注销功能。 - 图片上传模块:实现图片上传功能。 - 图片检索模块:实现图片检索功能。 - 图片展示模块:实现图片展示功能。 其中,用户认证模块使用 Spring Security 实现,图片上传模块和图片检索模块使用 MyBatis 实现,图片展示模块使用 Spring MVC 实现。 3. 前端设计 前端主要包括以下模块: - 用户认证模块:实现用户注册、登录和注销功能。 - 图片上传模块:实现图片上传功能。 - 图片检索模块:实现图片检索功能。 - 图片展示模块:实现图片展示功能。 其中,用户认证模块使用 Vue.js 和 Element UI 实现,图片上传模块和图片检索模块使用 Axios 实现,图片展示模块使用 Vue.js 和 Element UI 实现。 四、实现步骤 1. 创建 Spring Boot 项目,并添加相关依赖。 2. 创建 MySQL 数据,并创建相应的表。 3. 创建 MyBatis Mapper,实现图片上传和检索功能。 4. 使用 Spring Security 实现用户认证和鉴权功能。 5. 创建 Spring MVC Controller,实现图片展示功能。 6. 创建 Vue.js 前端项目,并使用 Element UI 实现用户认证模块。 7. 使用 Axios 实现图片上传和检索功能。 8. 使用 Vue.js 和 Element UI 实现图片展示模块。 9. 集成前后端项目,测试应用程序的各个功能。 五、总结 本文介绍了一套完整的在线图片应用程序的设计和实现步骤,涉及了后端和前端的技术选型、数据设计、后端接口实现、前端页面实现等方面。通过本文的介绍,可以帮助读者了解如何使用 Spring Boot、Vue.js 和 MySQL 等技术实现一套完整的 web 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值