如何从 android 中的位图中获取图像的原始字符串?
How to get raw string of an image from Bitmap in android?
我正在制作一个人们可以拍摄和上传照片的应用程序。我目前有一个代表照片的 Bitmap
对象,我想 post 将其发送到服务器。
不幸的是,服务器需要 jpg 的原始文本(就像您在 linux 上键入 cat /path/to/jpg
时看到的那样)。
如何将我的 Bitmap
转换成这种 String
?
我猜你的服务器需要一个 Base64 编码的图像字符串,而不仅仅是来自 cat /path/to/jpg
的字符串。
要获取 Base64 字符串,您可以使用:
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); // '100' is quality
byte[] byteArray = out.toByteArray();
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
假设您的位图图像被 bitmapImage
-
引用
Bitmap bitmapImage = //your code for getting Bitmap
现在创建 ByteOutputStream
ByteArrayOutputStream byteOutptuStream = new ByteArrayOutputStream();
bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, byteOutptuStream);
byte[] byteArray = byteOutptuStream.toByteArray();
然后使用 Base64 编码对图像进行编码 -
String imageAsString = Base64.encodeToString(byteArray, Base64.DEFAULT);
更新: 如果您想跳过 Base64
编码,那么您可以使用任一代码片段 -
String imageAsString2 = new String(byteArray, "UTF-8");
String imageAsString3 = new String(byteArray);
String imageAsString4 = new byteArray.toString();
我正在制作一个人们可以拍摄和上传照片的应用程序。我目前有一个代表照片的 Bitmap
对象,我想 post 将其发送到服务器。
不幸的是,服务器需要 jpg 的原始文本(就像您在 linux 上键入 cat /path/to/jpg
时看到的那样)。
如何将我的 Bitmap
转换成这种 String
?
我猜你的服务器需要一个 Base64 编码的图像字符串,而不仅仅是来自 cat /path/to/jpg
的字符串。
要获取 Base64 字符串,您可以使用:
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); // '100' is quality
byte[] byteArray = out.toByteArray();
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
假设您的位图图像被 bitmapImage
-
Bitmap bitmapImage = //your code for getting Bitmap
现在创建 ByteOutputStream
ByteArrayOutputStream byteOutptuStream = new ByteArrayOutputStream();
bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, byteOutptuStream);
byte[] byteArray = byteOutptuStream.toByteArray();
然后使用 Base64 编码对图像进行编码 -
String imageAsString = Base64.encodeToString(byteArray, Base64.DEFAULT);
更新: 如果您想跳过 Base64
编码,那么您可以使用任一代码片段 -
String imageAsString2 = new String(byteArray, "UTF-8");
String imageAsString3 = new String(byteArray);
String imageAsString4 = new byteArray.toString();