【发布时间】:2017-11-21 05:25:15
【问题描述】:
我在将 byte[] 转换为 BufferedImage 时遇到问题。我知道有很多帖子和问题答案,但我就是不明白为什么我的代码是错误的。 (错误:线程“main”java.lang.IllegalArgumentException 中的异常:image == null!)
谢谢!
try {
String hex = "57656c636f6d652c206d7920667269656e642e";
byte[] im = DatatypeConverter.parseHexBinary(hex);
InputStream in = new ByteArrayInputStream(im);
BufferedImage bImageFromConvert = ImageIO.read(in);
ImageIO.write(bImageFromConvert, "jpg", new File("c:/welcome.jpg"));
} catch (Exception ex) {
}
【问题讨论】:
-
好的,所以我解码了十六进制字符串,它说“欢迎,我的朋友。” ImageIO.read() 读取 JPG 和 PNG 等文件。你期望它对一串 ascii 做什么?
-
要将文本转换为图像,您需要创建所需大小的缓冲图像,根据需要填充背景,设置颜色,设置字体,然后在其上绘制字符串。你不能只用几行代码将文本变成图像(反正不是用 java 标准库)
-
你看不出你的代码为什么错了?你怎么能想象你的代码是正确的?
-
另外,如果您的十六进制字符串包含 JPEG,则无需将其解码为
BufferedImage并再次编码。只需将解析后的字节 (im) 直接写入文件即可。
标签: java byte bufferedimage