探讨如何保护 Java 应用程序图像资源
1个回答
展开全部
试想,如果这些图像文件是重要的版权标志,那么后果肯定是应用程序开发者不希望看到的。因此,有必要采用一些措施将这些图像文件保护起来。”文中作者使用了图像构造方法:
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); 解压代码:
icon=(ImageIcon)out.readObject(); 如果在一应用程序中,有多个重要图象文件,可以使用 ImageIcon 数组或者 java.util.List 类,再使用上面的方法。当然也可以一个一个地保存为 *.img 文件。再反序列化还原。关于作者张大志,男,从事网页设计,网络程序开发。现在珠海一公司工作。我很喜欢java,研究JAVA程序设计有几年的时间,通过了SUN公司的SCJP认证,一直关注着java的发展。我的email: zdzwsz@cmmail.com欢迎大家和我多多交流。 关闭[x]关于报告滥用的帮助报告滥用谢谢! 此内容已经标识给管理员注意。关闭[x]关于报告滥用的帮助报告滥用报告滥用提交失败。 请稍后重试。关闭[x]developerWorks:登录IBM ID:需要一个 IBM ID?忘记IBM ID?密码:忘记密码?更改您的密码 保持登录。单击提交则表示您同意developerWorks 的条款和条件。 使用条款 当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。所有提交的信息确保安全。关闭[x]请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首
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); 解压代码:
icon=(ImageIcon)out.readObject(); 如果在一应用程序中,有多个重要图象文件,可以使用 ImageIcon 数组或者 java.util.List 类,再使用上面的方法。当然也可以一个一个地保存为 *.img 文件。再反序列化还原。关于作者张大志,男,从事网页设计,网络程序开发。现在珠海一公司工作。我很喜欢java,研究JAVA程序设计有几年的时间,通过了SUN公司的SCJP认证,一直关注着java的发展。我的email: zdzwsz@cmmail.com欢迎大家和我多多交流。 关闭[x]关于报告滥用的帮助报告滥用谢谢! 此内容已经标识给管理员注意。关闭[x]关于报告滥用的帮助报告滥用报告滥用提交失败。 请稍后重试。关闭[x]developerWorks:登录IBM ID:需要一个 IBM ID?忘记IBM ID?密码:忘记密码?更改您的密码 保持登录。单击提交则表示您同意developerWorks 的条款和条件。 使用条款 当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。所有提交的信息确保安全。关闭[x]请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询