探讨如何保护 Java 应用程序图像资源

探讨如何保护 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: [email protected]欢迎大家和我多多交流。 关闭[x]关于报告滥用的帮助报告滥用谢谢! 此内容已经标识给管理员注意。关闭[x]关于报告滥用的帮助报告滥用报告滥用提交失败。 请稍后重试。关闭[x]developerWorks:登录IBM ID:需要一个 IBM ID?忘记IBM ID?密码:忘记密码?更改您的密码 保持登录。单击提交则表示您同意developerWorks 的条款和条件。 使用条款 当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。所有提交的信息确保安全。关闭[x]请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首

那你路径不对了啊“src/com/zys/dariyandtank/images.密码登陆.jpg”因为你的图片不是在web-inf下面所以你要引用绝对路径。如果在web-inf下面则直接使用/images.密码登陆.jpg就可以了

1.调用"images"文件夹里的文件放在ImageIcon里显示

2.在windows下面显示正常Java在图形处理时调用了本地的图形处理库。在利用Java作图形处理(比如:图片缩放,图片签名,生成报表)时,如果运行在windows上不会出问题。如果将程序移植到Linux/Unix上的时候有可能出现图形不能显示的错误。

3.提示信息:"Can't connect to X11 window server"这是由于Linux的图形处理需要一个X Server服务器。(关于Linux的图形处理模式参考htt p://www.douzhe.com/docs/fbsd2/5.htm)

解决办法:

1.如果服务器上安装有图形界面,可以通过设置环境变量:DISPALY=127.0.0.1:0.0解决。

2. 如果没有安装图形界面,可以在Java运行时加上参数:-Djava.awt.headless=true。

3. 使用PJA库来代替本地图形处理库。

参考:http://www.idautomation.com/kb/xwindow-error.html Tomcat的修改如下:

打开 %Tomcat_home%/bin/catalina.sh 文件在文件的86%处,启动Tomcat的脚本中加上:-Djava.awt.headless=true /

参考:

"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS /

-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS"

-classpath "$CLASSPATH" /

-Dcatalina.base="$CATALINA_BASE" /

-Dcatalina.home="$CATALINA_HOME" /

-Djava.io.tmpdir="$CATALINA_TMPDIR" /

-Djava.awt.headless=true /

org.apache.catalina.startup.Bootstrap "$@" start /

>>"$CATALINA_BASE"/logs/catalina.out 2>&1 &

if [ ! -z "$CATALINA_PID" ]then

echo $! >$CATALINA_PID fi

fielif [ "$1" = "stop" ] then

保存后,重新启动就可以处理图形了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11230585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存