首页 > 编程开发 > Java > 正文  
探讨如何保护Java应用程序图像资源
出自:ibm.com/developerworks 张大志 2002年08月17日 21:57
在Java应用程序中,可以动态地调用显示图像文件(如:*.gif,*.jpg),不过令人感到美中不足的是,直接使用Java应用程序调用的图像资源,都必须以文件的形式存放在硬盘或网络上的,当应用程序分发给用户后,用户可以轻而易举地使用各种图像编辑软件,将与程序对应的图像文件资源篡改的面目皆非。试想,如果这些图像文件是重要的版权标志,那么后果肯定是应用程序开发者不希望看到的。因此,有必要采用一些措施将这些图像文件保护起来。”文中作者使用了图像构造方法:
Image img=Toolkit.getDefaultToolkit().createImage(byte[] map);

只需要将图像文件转换成Java源程序的一个字节数组类型的常量,嵌入源程序,然后直接构造出img对象即可实现源程序中内嵌图像资源以达到保护图象文件。

这不失为一种好的、可行的方法。我在此想说的是另一种方法。使用javax.swing.ImageIcon类。ImageIcon类是一个可序列化的类。我们可使用,ObjectInputStream,ObjectOutputStream类。将图象文件用writeObject(Object obj)方法保存为一文件以达到保护图象文件。

主要程序代码:

ImageIcon icon = new ImageIcon("copy.jpg");
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("image.img"));
out.writeObject(icon);


然后,再用readObject()方法造型为ImageIcon。

主要程序代码:

ObjectInputStream out=new ObjectInputStream(new FileInputStream("image.img"));
icon=(ImageIcon)out.readObject();

再用其他对象的方法显示图像即可。如:
public void paint(Graphics g){
g.drawImage(icon.getImage(),0,0,350,263,this); }

另外,你还可以用类似的方法给你的图象文件使用zip类进行文件压缩。可使文件更具有保密性。

主要程序代码:

ImageIcon icon = new ImageIcon("copy.jpg");
ObjectOutputStream out=new ObjectOutputStream(new GZIPOutputStream(new FileOutputStream("image.img")));
out.writeObject(icon);


解压代码:
ObjectInputStream in=new ObjectInputStream(new GZIPInputStream(new FileInputStream("image.img")));
icon=(ImageIcon)out.readObject();

如果在一应用程序中,有多个重要图象文件,可以使用ImageIcon数组或者 java.util.List类,再使用上面的方法。当然也可以一个一个地保存为*.img文件。再反序列化还原。

】【http://www.trainlinux.com】【Close
『相关资料』
Java写的支持断点续传的FTP (2002-08-17 21:56)
灵活掌握Date和Time (2002-08-17 21:56)
Java 2 新的焦点子系统 (2002-08-16 21:56)
漫谈 Java IDE (2002-08-16 21:55)
Home 

诚恩Linux培训工作室