如何知道字节数组是否是有效图像
How to know if a byte array is a valid image
有没有办法知道字节数组是否是有效图像?
我正在拍照,在OnActivityResult中:
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 75, out);
//arrayFotos is an ArrayList
arrayFotos.add(new BeanFotos("", imageBitmap, lastKnwonLocation.getLatitude(), lastKnwonLocation.getLongitude()));
我将其存储在数据库中:
//listaFotos and arrayFotos are the same array, but with different names, because I am storing it in another class in my app
for(int i=0;i<listaFotos.size();i++){
values.clear();
values.put("codficha", codficha);
int bytes=listaFotos.get(i).getFoto().getByteCount();
ByteBuffer buffer = ByteBuffer.allocate(bytes);
listaFotos.get(i).getFoto().copyPixelsToBuffer(buffer);
values.put("foto", buffer.array());
db.insert("fotos", null, values);
}
稍后,我需要显示该图像:
byte[] arrayFoto = csr2.getBlob(0);
Bitmap fotoBitmap=BitmapFactory.decodeByteArray(arrayFoto, 0, arrayFoto.length);
问题是,无论我做什么,decodeByteArray 方法始终 returns 为空。我试过使用外部库,它总是空的,所以我想也许我以错误的方式存储它。 arrayFoto 变量不为空,我正在接收字节(准确地说是 84584),但 decodeByteArray 方法 returns 为空。
那么,有没有办法让我确定字节数组是正确的图像?
谢谢。
您似乎正在将未压缩的位图写入数据库。如果您希望能够使用 BitmapFactory
.
对其进行解码,则需要先将其压缩为 jpeg 或 png
此外,将图像存储在数据库中不是一个好主意,因为游标 window 大小限制为 1MB。您不应该将二进制数据存储在 SQLite 数据库中,除非它非常小。
有没有办法知道字节数组是否是有效图像?
我正在拍照,在OnActivityResult中:
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 75, out);
//arrayFotos is an ArrayList
arrayFotos.add(new BeanFotos("", imageBitmap, lastKnwonLocation.getLatitude(), lastKnwonLocation.getLongitude()));
我将其存储在数据库中:
//listaFotos and arrayFotos are the same array, but with different names, because I am storing it in another class in my app
for(int i=0;i<listaFotos.size();i++){
values.clear();
values.put("codficha", codficha);
int bytes=listaFotos.get(i).getFoto().getByteCount();
ByteBuffer buffer = ByteBuffer.allocate(bytes);
listaFotos.get(i).getFoto().copyPixelsToBuffer(buffer);
values.put("foto", buffer.array());
db.insert("fotos", null, values);
}
稍后,我需要显示该图像:
byte[] arrayFoto = csr2.getBlob(0);
Bitmap fotoBitmap=BitmapFactory.decodeByteArray(arrayFoto, 0, arrayFoto.length);
问题是,无论我做什么,decodeByteArray 方法始终 returns 为空。我试过使用外部库,它总是空的,所以我想也许我以错误的方式存储它。 arrayFoto 变量不为空,我正在接收字节(准确地说是 84584),但 decodeByteArray 方法 returns 为空。
那么,有没有办法让我确定字节数组是正确的图像?
谢谢。
您似乎正在将未压缩的位图写入数据库。如果您希望能够使用 BitmapFactory
.
此外,将图像存储在数据库中不是一个好主意,因为游标 window 大小限制为 1MB。您不应该将二进制数据存储在 SQLite 数据库中,除非它非常小。