我在Bitmap
上发送Socket
(从文件解码),我担心我无法write()
byte[]
所有Bitmap bitmap = BitmapFactory.decodeFile(path);
int cBytes = bitmap.getByteCount();
ByteBuffer cBuffer = ByteBuffer.allocate(cBytes);
bitmap.copyPixelsToBuffer(cBuffer);
bitmap.recycle();
byte[] bitmapArray = cBuffer.array();
单个电话。
byte[]
这就是我获取Socket
的方法。那么通过{{1}}发送这个数组的方法是什么,我应该把它分成块吗?喜欢实现队列或其他东西;或者是否有任何课程可以帮我做这个发送?
答案 0 :(得分:0)
我使用loopj的异步http库,但是我在这里做的是:
public void add_image_android(final Bitmap image)
{
final ByteArrayInputStream bs;
final Bitmap targetBitmap;
Matrix matrix = new Matrix();
matrix.postRotate(90);
targetBitmap = Bitmap.createBitmap(image, 0, 0,
image.getWidth(), image.getHeight(),
matrix, true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
targetBitmap.compress(CompressFormat.JPEG, 100, bos);
byte[] bitmapdata = bos.toByteArray();
bs = new ByteArrayInputStream(bitmapdata);
targetBitmap.recycle();
String url = "http://www.somesite.com/api.php?callback=add_image";
RequestParams params = new RequestParams();
params.put("file", bs);
params.put("is_android","Y");
client.post(url, params, new JsonHttpResponseHandler()
{
@Override
public void onSuccess(JSONObject response)
{
try
{
bs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
((ResponseListener)_mainContext).add_image_android_response(response.toString());
return;
}
@Override
public void onFailure(Throwable e)
{
fireToast("api error:"+e);
Log.d("api error:",e.toString());
}
});
}
答案 1 :(得分:0)
您可以在一个write()中编写它。不需要分块。你的问题将是记忆,而不是写作。