JAVA中实现图片对象转换成图片文件和字节数组(Byte[ ])的方法讨论
网上关于这方面的讨论其实有很多,但找起来也不太容易,笔者以JMSL4.0画出的chart对象为例阐释这一过程,希望能带来些启发。importcom.imsl.chart.*;importjava.awt.image.BufferedImage;importjava.io.*;importjavax.imageio.stream.FileImageOutputStream;importjavax.imageio.stream.ImageOutputStream;publicclassSampleImageIO {publicbyte[] getByteArray() {byte[] b=null;try{
Chart chart=createChart();//generate imagechart.setScreenSize(newjava.awt.Dimension(500,500));
BufferedImage bi=newBufferedImage(500,500, BufferedImage.TYPE_4BYTE_ABGR_PRE);
chart.paintChart(bi.createGraphics());//generate buffered image//感觉bufferedimage经常和imageIO成对出现作为对图像对象的标准转化形式。File file=newFile("D:\\workspace\\SampleImageIO1.png");//deploy filejavax.imageio.ImageIO.write(bi,"PNG", file);//generate fileByteArrayOutputStream bos=newByteArrayOutputStream();
javax.imageio.ImageIO.write(bi,"png", bos);
b=bos.toByteArray();//generate byte[]//check to get the byte[]//其实byte[]的最大的用途应该是网站的图片动态显示,下面的code只是实验一下,也顺便介绍一下byte[]转换成文件的操作。String newFileName="d:\\temp\\wine1.png";
FileImageOutputStream imageOutput=newFileImageOutputStream(newFile(newFileName));
imageOutput.write(b,0, b.length);
imageOutput.close();
System.out.println("Please find image in"+newFileName);
}catch(Exception ex) {
System.out.println("Exception:"+ex);
ex.printStackTrace();
}returnb;
}//jmsl画图的code,挺快的,好用,但是人家是收费的library~~,抛砖引玉吧staticChart createChart() {
Chart chart=newChart();
AxisXY axis=newAxisXY(chart);intnpoints=20;doubledx=.5*Math.PI/(npoints-1);doublex[]=newdouble[npoints];doubley[]=newdouble[npoints];//Generate some datafor(inti=0; i
x[i]=i*dx;
y[i]=Math.cos(x[i]);
}newData(axis, x, y);returnchart;