目前,当我想将位图保存到磁盘时,我使用:
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
是否可以将数据写入字节数组?我需要操纵进入磁盘的数据,而不仅仅是位图的图像数据。 jpg包含元数据等其他内容。我真的不在乎它是一个jpg。我对数据不感兴趣,只是访问通常写入磁盘的整个数据。
答案 0 :(得分:2)
您可以使用以下方式执行此操作:
public byte[] convertBitmapToByteArray(Bitmap bitmap) {
ByteArrayOutputStream buffer = new ByteArrayOutputStream(bitmap.getWidth() * bitmap.getHeight());
bitmap.compress(CompressFormat.PNG, 100, buffer);
return buffer.toByteArray();
}
答案 1 :(得分:2)
如果您希望保留原始像素数据(不压缩),可以尝试:
public byte[] bitmapToByteArray(Bitmap bitmap) {
ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
bitmap.copyPixelsToBuffer(byteBuffer);
return byteBuffer.array();
}
答案 2 :(得分:2)
您可以使用此代码:
ByteArrayOutputStream out = new ByteArrayOutputStream();
bMap.compress(Bitmap.CompressFormat.PNG, 100, out);
byte[] imageArray = out.toByteArray();
答案 3 :(得分:-1)
U can try this.
if (Utility.isWifiPresent()
|| Utility.isMobileConnectionPresent()) {
URL url = new URL(fileUrl);
InputStream iStream = url.openConnection().getInputStream();// .read(data)
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
byte[] tmpArray = new byte[1024];
int nRead;
while ((nRead = iStream.read(tmpArray, 0, tmpArray.length)) != -1) {
buffer.write(tmpArray, 0, nRead);
}
buffer.flush();
data = buffer.toByteArray();
FileOutputStream fOut = null;
//path to store
fOut = Utility.getFileOutputStreamForCloud(
sdcardFolderPath, fileUrl);
}
fOut.write(data);
fOut.flush();
fOut.close();