[英]How to convert image into Hex String in android?
我需要将图像转换为十六进制字符串以将其发送到 Web 服务器。 我正在使用这种方法将图像转换为字节数组
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
int size = receipt.getRowBytes() * receipt.getHeight();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
receipt.compress(Bitmap.CompressFormat.JPEG, 90, stream);
receiptbyte = stream.toByteArray();
String hexstring = toHex(receiptbyte);
这要转换为十六进制
public static String toHex(byte[] bytes) {
BigInteger bi = new BigInteger(1, bytes);
return String.format("%0" + (bytes.length << 1) + "X", bi);
}
我想像这样产生输出
c11ee236-8f72-4b60-9208-79977d61993f
我不知道该怎么做。 我需要编码吗?
您拥有的字符串如c11ee236-8f72-4b60-9208-79977d61993f
不是图像 - 它看起来更像是存储在服务器上的图像的 ID。
如果您想要图像,您必须将 ID 发送到服务器,服务器将存储在属于该 ID 的数据库中的图像数据发回。
在 Java 中,您可以简单地自己生成这样的随机 ID:
UUID u = UUID.randomUUID();
System.out.println(u.toString());
输出例如: 3aa5b32d-c6fb-43c5-80c9-78a1a35aff40
构建您自己的服务器,您可以使用它并将图像数据和此 ID 保存到数据库中。
你可以这样做
//encode image to base64 string
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT);
//decode base64 string to image
imageBytes = Base64.decode(imageString, Base64.DEFAULT);
Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
image.setImageBitmap(decodedImage);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.