【发布时间】:2013-02-12 13:10:22
【问题描述】:
根据路径同步图像的更好解决方案是:
- 数据库 - Web 服务 - 移动应用程序
在我的数据库中,我有一个 blob 字段 作为图像。所以,我需要为网络服务和移动应用程序传输图像。
我找到了解决方案(尝试),但大图像总是返回内存不足。解决方法如下:
-
在我的 Web 服务中,我使用 json API 来存储要集成的 blob 图像。看,我将图像创建为 base64,这对于小图像没有问题,但大图像(2000 个项目)会触发内存不足。所以,我的代码如下:
public void getImages(String date) throws Exception { JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); if (date != null) { try { Class.forName(DRIVER); connection = DriverManager.getConnection(URL, USER, PASS); Statement s = connection.createStatement(); ResultSet r = s.executeQuery("select * from images"); while (r.next()) { JSONObject o = new JSONObject(); byte[] imageBytes = r.getBytes("image"); String imageBase64 = DatatypeConverter.printBase64Binary(imageBytes); o.put("image", imageBase64); jsonArray.put(o); } jsonObject.put("images", jsonArray); } catch (SQLException e) { System.out.println(e); } } } 在我的移动应用程序中,读取 json 并将 base64 解码为显示图像后的每个图像。所以,我不需要将图像存储在移动磁盘或网络服务磁盘中。
移动应用程序将离线工作。有什么想法可以解决我的问题吗?
【问题讨论】:
-
不要将图像直接编码为 JSON。而是返回一个单独提供图像的服务器 URL。
标签: java json base64 blob sync