| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package com.zksy.environment.utils;
- import io.netty.buffer.ByteBuf;
- import javax.imageio.ImageIO;
- import java.awt.image.BufferedImage;
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.IOException;
- public class HexToImageConverter {
- /**
- * 将字节数组保存为图片文件。
- *
- * @param hexString 16进制字符串
- * @param outputFilePath 输出文件路径
- * @throws IOException 如果写入文件时发生异常
- */
- public static File hexStringToImage(String hexString, String outputFilePath) throws IOException {
- // 将16进制字符串转换为字节数组
- byte[] imageBytes = hexStringToByteArray(hexString);
- // 使用ImageIO的read方法从字节输入流中读取图片(注意:这里直接读取可能不工作,因为ImageIO.read期望的是图片格式的文件流)
- // 对于直接从字节数组创建图片,我们通常需要知道图片的具体格式,或者使用 ByteArrayInputStream 包装字节数组
- BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageBytes));
- File file;
- if(image != null) {
- file = new File(outputFilePath);
- // 保存图片到文件
- ImageIO.write(image, "PNG", file);
- }else{
- file = null;
- }
- return file;
- }
- /**
- * 将16进制字符串转换成字节数组。
- *
- * @param hexString 16进制字符串
- * @return 字节数组
- */
- public static byte[] hexStringToByteArray(String hexString) {
- int len = hexString.length();
- byte[] data = new byte[len / 2];
- for (int i = 0; i < len; i += 2) {
- data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
- + Character.digit(hexString.charAt(i+1), 16));
- }
- return data;
- }
- /**
- * TODO 将字节数组转成16进制
- * @param bytes
- * @return java.lang.String
- * @author Administrator
- * @date 2024/8/20 10:51:16
- */
- static String bytesToHex(byte[] bytes) {
- StringBuilder hexBuilder = new StringBuilder();
- for (byte b : bytes) {
- hexBuilder.append(String.format("%02X", b));
- }
- return hexBuilder.toString();
- }
- }
|