BufferedImage img = ...//Your ImageFileOutputStream fos = new FileOutputStream("test.jpg");
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(fos);
encoder.encode(img);
fos.close();
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(fos);
encoder.encode(img);
fos.close();
Image im;
BufferedImage bi;
im = bi; (可行)
bi = im; (编译可以通过,但是我觉得会出问题)
不知道这个BufferImage的对象如何创建?
Image yourImg = ...
BufferedImage img = (BufferedImage) yourImg;
Image yourImg = ...
BufferedImage img = new BufferedImage(yourImg.getWidth(), yourImg.getHeight(), BufferedImage.TYPE_INT_RGB);
img.getGraphics().drawImage(yourImg, 0, 0, null);
...
我要做的程序是这样,我有一幅demo.jpg的文件,然后我读入这幅图片,使用了自己的加密算法,比如是这样:myEncode("demo.jpg"),然后把加密的文件存为demo.ecd。我现在要写一个解密程序,首先读入这个文件,大概是这样:byte[] readFile("demo.ecd"),就是读入demo.ecd文件。然后得到一个字节数组byteBuffer,接着我对这个数组进行解密,使用方法就是:byte[] mydecode(byteBuffer);得到了字节数组imageBuffer, 接着我使用以下方法从这个imageBuffer字节数组得到了一个Image类的对象:Image image = Toolkit.getDefaultToolkit().createImage(byteBuffer);(你可以看看JDK对这个方法的介绍)。这样我就得到了一个Image类的对象image。现在我的问题就是要把这个Image类的对象image 写为一个jpe文件demo.jpg,既是还原了。
不知道你看明白没有?
还有,Image类如果是抽象类的话,它怎么可能创造实例呢?
{
try
{
FileInputStream fis = new FileInputStream("test.jpg");
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close(); Image yourImg = Toolkit.getDefaultToolkit().createImage(buffer);
MediaTracker tracker = new MediaTracker(new JLabel());
tracker.addImage(yourImg, 1);
tracker.waitForID(1); BufferedImage img = new BufferedImage(yourImg.getWidth(null), yourImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
img.getGraphics().drawImage(yourImg, 0, 0, null);
FileOutputStream fos = new FileOutputStream("test1.jpg");
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(fos);
encoder.encode(img);
fos.close();
System.exit(0);
}
catch(Exception e)
{
e.printStackTrace();
System.exit(1);
}
}
谢谢 cbhyk 的帮助!