0

パスに従って画像を同期するためのより良い解決策は何ですか?

  • データベース-Webサービス-モバイルアプリケーション

私のデータベースには、画像としてBLOBフィールドがあります。そのため、Webサービスとモバイルアプリケーション用に画像を転送する必要があります。

私は解決策を見つけました(試み)が、大きな画像は常にメモリから返されます。以下の解決策:

  • 私の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を読み取り、showimageの後にbase64を各画像にデコードします。したがって、画像をモバイルディスクやWebサービスディスクに保存する必要はありません。

モバイルアプリケーションはオフラインで動作します。私の問題を解決するためのアイデアはありますか?

4

1 に答える 1

0

画像を JSON に直接エンコードしないでください。代わりに、画像を個別に提供するサーバー URL を返します。

@Alan Kruegerのヒント。それはより良い解決策です.jsonで画像をエンコードするのは悪い考えです.

于 2013-02-27T21:47:52.630 に答える