【发布时间】:2016-09-14 19:58:42
【问题描述】:
我已经从 oracle 程序中读取了 clob,并通过以下代码将它们转换为 java.awt.Image 对象。
InputStream stream = clob.getAsciiStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
int a1 = stream.read();
while (a1 >= 0) {
output.write((char) a1);
a1 = stream.read();
}
Image myImage = Toolkit.getDefaultToolkit().createImage(output.toByteArray());
output.close();
现在,我想将 myImage 保存到硬盘。那么,我该怎么做才能将这些 java.awt.Image 保存到文件中?
我的尝试:
我已将 myImage 转换为 BufferedImage,然后通过以下代码将其写入 ImageIo:
BufferedImage bi = (BufferedImage)myImage;
ImageIO.write(bi, "jpg",new File("E:\\out.jpg"));
但我得到以下异常:
Got Exception as : sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage
java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot be cast to java.awt.image.BufferedImage
at com.connect.home.Home.getHomeParameter(Home.java:103)
at com.connect.home.Home.main(Home.java:141)
如何消除此错误?任何建议都有很大帮助。
【问题讨论】:
-
得到异常:宽度 (-1) 和高度 (-1) 不能
-
使用 ImageIO.write 方法。
-
我应该在哪里使用 ImageIO.write 方法?
-
@AlexanderOrlov “但是它不可能(总是)将它转换为其他类”你不需要“总是”在这里,因为你永远不能这样做投掷。仅转换为同一类或父类。
TookitImage和BufferedImage是兄弟(同一个父类),这个演员表不起作用。
标签: java