java - 如何在android中将图像转换为十六进制字符串?

标签 java android hex type-conversion image-conversion

我需要将图像转换为十六进制字符串以将其发送到网络服务器。我正在使用这种方法将图像转换为字节数组

         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 保存到数据库中。

关于java - 如何在android中将图像转换为十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603063/

相关文章:

Java - 从方法返回一个数组到main

java - 第 20 行 : 'C: " "' when trying to publish my app on Google Play 上的错误无法识别的 xmltree 行

java - 通过telnet连接esp8266 android

C# - 如何使用正则表达式替换 NULL 字符?

windows - Windows快捷方式的内部结构是怎样的?

c - 在 C 中使用 sprintf 进行十六进制到十进制的转换

java - 在 fragment 中使用 android-color-picker?

java - JTree:加速从数据库检索的对象中绘制 1000 多个子节点?

安卓 list 文件

android - MaterialButton 和简单的 Button 有什么区别吗?