这里我想在数据库中发送我的图片..但是我无法将imgPro分配给values.put ..请帮助我..
else if (requestCode == 2) {
Uri selectedImage = data.getData();
String[] filePath = { MediaStore.Images.Media.DATA };
Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePath[0]);
String picturePath = c.getString(columnIndex);
c.close();
Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
imgPro.setImageBitmap(thumbnail);
}
答案 0 :(得分:0)
你可以这样做。
public class ImageConverter {
public static String imageToStringConverter(Bitmap image){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
String imageToString = Base64.encodeToString(byteArray, Base64.NO_WRAP);
return imageToString;
}
public static Bitmap stringToimageConverter(String imageString){
byte[] stringTobyte = Base64.decode(imageString, Base64.NO_WRAP);
Bitmap bmp = BitmapFactory.decodeByteArray(stringTobyte, 0, stringTobyte.length);
return bmp;
}
}
您将调用此两个函数将图像转换为字符串,然后保存在数据库中。如下所示
String statusImage = ImageConverter.imageToStringConverter(selectedImage);
selectedImage
是您从文件中选择的位图。如果你想显示图像,那么再次将字符串转换回图像
现在为什么Base64 ??
如果您想要通过网络发送某些二进制数据, 你通常不会只通过流式传输比特和字节来实现 原始格式的电线。为什么?因为有些媒体是为了制作的 流文本。你永远不知道 - 一些协议可能会解释你的 二进制数据作为控制字符(如调制解调器)或二进制数据 因为底层协议可能会这么想而搞砸了 你输入了一个特殊的角色组合(比如FTP 翻译行结尾)。
因此,为了解决这个问题,人们将二进制数据编码为字符。 Base64是这些类型的编码之一。为什么64?因为你能 通常依赖于许多人中存在的相同的64个字符 字符集,你可以合理地确信你的数据 最终会在电线的另一端不受损坏。