我已经通过以下代码从Oracle过程中读取了CLOB,并将其转换为java.awt.Image对象。
现在,我想把myImage保存到硬盘上。那么,我该怎么做才能将这些java.awt.Image保存到文件中呢?
我的尝试:
我已经将myImage转换为BufferedImage,然后通过以下代码将其写入ImageIo:
但是我遇到了以下异常:
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)
我该如何解决这个错误?任何建议都非常有帮助。
myImage
强制转换为Image
或BufferedImage
,它在运行时始终保持为ToolkitImage
。将子类强制转换为超类(从TookitImage
到Image
)总是可行的。但是,即使它们共享相同的超类,也不一定能将其强制转换为其他某些类(如BufferedImage
)。 - AlexTookitImage
和BufferedImage
是兄弟(同一父类),这种转换是行不通的。 - Tom