简体   繁体   English

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

[英]How to convert image into Hex String in android?

I am need to convert image into hex string to send it to web server.我需要将图像转换为十六进制字符串以将其发送到 Web 服务器。 I am using this method to convert image to byte array我正在使用这种方法将图像转换为字节数组

         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);  

and this to convert into hex这要转换为十六进制

   public static String toHex(byte[] bytes) {
    BigInteger bi = new BigInteger(1, bytes); 
    return String.format("%0" + (bytes.length << 1) + "X", bi);
}

i want to produce the output as like我想像这样产生输出

c11ee236-8f72-4b60-9208-79977d61993f

I am not sure what to do.我不知道该怎么做。 Do i need to encode it?我需要编码吗?

The string you have like c11ee236-8f72-4b60-9208-79977d61993f is not an image - it looks more like an ID to an image stored on a server.您拥有的字符串如c11ee236-8f72-4b60-9208-79977d61993f不是图像 - 它看起来更像是存储在服务器上的图像的 ID。

If you want the image you have to send the ID to the server and the server sends back the image data stored in it's database that belongs to the ID.如果您想要图像,您必须将 ID 发送到服务器,服务器将存储在属于该 ID 的数据库中的图像数据发回。

In Java you can generate such random IDs simply by yourself:在 Java 中,您可以简单地自己生成这样的随机 ID:

UUID u = UUID.randomUUID();
System.out.println(u.toString());

Outputs for example: 3aa5b32d-c6fb-43c5-80c9-78a1a35aff40输出例如: 3aa5b32d-c6fb-43c5-80c9-78a1a35aff40

Building your own server you can use this and save both image data and this ID into a database.构建您自己的服务器,您可以使用它并将图像数据和此 ID 保存到数据库中。

you can do this你可以这样做

//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);

https://www.thecrazyprogrammer.com/2016/10/android-convert-image-base64-string-base64-string-image.html https://www.thecrazyprogrammer.com/2016/10/android-convert-image-base64-string-base64-string-image.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM