从Node.js获取图像,android应用程序中的图像缓冲区数据

时间:2015-05-29 09:02:24

标签: android json node.js

我在解析Json缓冲区数据到图像时遇到了麻烦。

这是我的Node.js代码和数据。我使用res.send(docs)将它发送到我的应用程序。

query.find({}, function(err, docs){
    if(!err){
        console.log(docs);
        res.send(docs);
    }
});

{ _id: 555ee1f5be40576c28c3e228,
    email: 'hh@hh.h',
    pw: 'aa',
    name: 'jimy',
    phone: '22222222222',
    __v: 0,
    img: 
     { _bsontype: 'Binary',
       sub_type: 0,
       position: 4146282,
       buffer: <Buffer ff d8 ff e1 96 f8 45 78 69 66 00 00 4d 4d 00 2a 00 00...}
}

这是我的Android应用程序代码。我使用了AsyncHttpClient。

HttpClient.post("getMember/", param, new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
        JSONArray jarr;
        JSONObject obj;
        try {
            jarr = new JSONArray(new String(responseBody));
            obj = jarr.getJSONObject(0);

            email_edt.setText(obj.get("email").toString());
            pw_edt.setText(obj.get("pw").toString());
            name_edt.setText(obj.get("name").toString());
            phone_edt.setText(obj.get("phone").toString());
        }
   }
}

此代码适用于没有img字段的文档。但当它得到包括img在内的响应时,需要很长时间,并且会触发“OutOfMemory”错误。 我不使用obj.get(“img”),只需获取responseBody并将其解析为JSONObject。 文件的大小约为4BM,它不是太大,但在我的android工作室中,如下所示多次登录。

Grow heap (frag case) to 131.704MB for 38189042-byte allocation
05-29 17:38:51.097  17193-17193/com.capstone.bookkeepingproto2 D/dalvikvm﹕ GC_FOR_ALLOC freed 26910K, 42% free 107442K/183252K, paused 266ms, total 266ms
05-29 17:38:52.177  17193-17193/com.capstone.bookkeepingproto2 D/dalvikvm﹕ GC_FOR_ALLOC freed 8192K, 42% free 107442K/183252K, paused 277ms, total 277ms
05-29 17:38:53.257  17193-17193/com.capstone.bookkeepingproto2 D/dalvikvm﹕ GC_FOR_ALLOC freed 8192K, 42% free 107442K/183252K, paused 282ms, total 282ms

请帮助我。

0 个答案:

没有答案