gpt4 book ai didi

java - 将 Tif 图像转换为 byte[]

转载 作者:行者123 更新时间:2023-12-01 18:13:04 25 4
gpt4 key购买 nike

我尝试将 Tiff 图像转换为 Byte[],但从 java 1.8 sdk 中获取异常。我在谷歌搜索但还没有得到解决方案。 相同的代码适用于 java 1.6

public static byte[] convertImage(String dirName, String imageName)
{
try
{
//String dirName="C:\\Temp\\";
ByteArrayOutputStream baos=new ByteArrayOutputStream(1000);
BufferedImage img=ImageIO.read(new File(dirName,imageName));

ImageIO.write(img, "tif", baos);
baos.flush();

byte[] bytearray = baos.toByteArray();

baos.close();

return bytearray;
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
catch(Exception ex)
{
ex.printStackTrace();
}
return null;

}

变量 img 在 java 1.8 中始终为 null,但 1.6 返回信息。

从 sdk 1.8 引发的异常如下

java.lang.IllegalArgumentException: image == null!
at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(Unknown Source)
at javax.imageio.ImageIO.getWriter(Unknown Source)
at javax.imageio.ImageIO.write(Unknown Source)
at test.practice.net.ConverterImageUsing18.convertImage(ConverterImageUsing18.java:88)
at test.practice.net.ConverterImageUsing18.GetBase64BinaryAsString(ConverterImageUsing18.java:52)
at test.practice.net.ConverterImageUsing18.main(ConverterImageUsing18.java:42)

任何点击或示例代码都是可观的。

最佳答案

ImageIO 需要额外的插件来读取或写入 TIFF。 built-in formats包括 BMP、GIF、JPEG、PNG 和 WBMP。要读取或写入 TIFF,您可以使用 JAI (jai_imageio.jar),TwelveMonkeys ImageIO或类似的。

如果没有合适的插件,ImageIO.read(...) 只会返回 null。这是您的 imgnull (并且您收到异常)的最可能原因。您可能在 Java 1.6 JRE 中安装了 JAI 或类似文件,或者您可能正在使用不同的文件进行测试。

但是,如果您只想获取原始文件的字节,则根本不需要使用 ImageIO。只需将文件中的字节读取到字节数组中,例如如下所示:

File file = new File(dirName, imageName);
int length = (int) file.length();
byte[] bytes = new byte[length];

try (DataInputStream input = new DataInputStream(new FileInputStream(file))) {
input.readFully(bytes);
}

或者在Java 8中,你可以写得更优雅(感谢@JoopEggen):

File file = new File(dirName, imageName);
byte[] bytes = Files.readAllBytes(file.toPath());

关于java - 将 Tif 图像转换为 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31420202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com