仓酷云

标题: JAVA网站制作之使用JAVA天生JPG缩略图 [打印本页]

作者: 山那边是海    时间: 2015-1-18 11:46
标题: JAVA网站制作之使用JAVA天生JPG缩略图
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。缩略图在某些网站,我们常常必要上传一些图片材料。但跟着高分辩率DC的提高,上传的图片容量会很年夜,好比300万象素DC出来的文件基础不下600K。
  为了办理便利,人人大概不肯意每次都用ACDsee修正它,而间接上传到服务器。可是这类做法在客户端看来就没有那末轻松了,关于拨号上彀的用户几乎是一场噩梦,固然你能够在图片地区设置wide和high!
  
  成绩的办理之道来了!我们能够在类中处置一张年夜图,并减少它。
  条件是必要JDK1.4,如许才干举行处置。按以下办法做:
  




  importjava.io.File;
  importjava.io.FileOutputStream;
  importjava.awt.Graphics;
  importjava.awt.Image;
  importjava.awt.image.BufferedImage;
  importcom.sun.image.codec.jpeg.JPEGCodec;
  importcom.sun.image.codec.jpeg.JPEGImageEncoder;
  
  publicclassJpgTest{
  
  publicvoidJpgTset()throwsException{
  File_file=newFile("/Order005-0001.jpg");//读进文件
  Imagesrc=javax.imageio.ImageIO.read(_file);//机关Image对象
  intwideth=src.getWidth(null);//失掉源图宽
  intheight=src.getHeight(null);//失掉源图长
  BufferedImagetag=newBufferedImage(wideth/2,height/2,BufferedImage.TYPE_INT_RGB);
  tag.getGraphics().drawImage(src,0,0,wideth/2,height/2,null);//绘制减少后的图
  FileOutputStreamout=newFileOutputStream("newfile.jpg");//输入到文件流
  JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
  encoder.encode(tag);//近JPEG编码
  //System.out.print(width+"*"+height);
  out.close();
  }
  }



  
  历程很复杂,从当地磁盘读取文件Order005-0001.jpg(2032*1524),酿成Image对象src,接着机关方针文件tag,设置tag的长宽为源图的一半,对tag举行编码,输入到文件流out,最初封闭文件流。
  
  另有一些成绩必要申明:
  第一,今朝只能撑持JPG(JPEG)、GIF、PNG三种格局。
  第二,关于源图的容量无限制,最好不要凌驾1M,不然会抛内存不敷的毛病,不外我实验过1.8M的源图,能够乐成,可是也很简单抛内存不敷。
  
  援用一名先辈的话:图像运算自己是麋集型运算,必要大批的内存寄存象素值。我用VC试了一下,4M的图像也有成绩,并且越是紧缩比年夜的图片在内存中复原成BITMAP时必要的内存越年夜。办理的办法,能够重写编码类,先开必定的内存,然后一段一段编码写光临时文件中,输入的时分再一段一段读出来。或使用nio的内存映象来操纵。

  JavaMail因为接纳了Builder形式,师长教师成一个邮件的每个部分,然后兼并成一个完全的邮件对象,如许每一个构件都要师长教师成到内存中,你假如发送一个上百兆的附件,那末在机关Part时一定内存溢出,以是我就改写了BodyPart的机关,让他和一个一时文件联系关系,然后用一时文件保留Part而不是机关在内存中,如许任义巨细的附件(硬盘能放得下为限)都能够发送了。
  
  最初,假如人人对图象处置有更高的请求,无妨存眷一下开源项目。好比JMagick,可使用JMagick来完成图片的复制、信息猎取、斜角、殊效、组合、改动巨细、加边框、扭转、切片、改动格局、往色等等功效。



唉!都是钱闹的1.Swing和.net开发比较------从市场份额看.net开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具
作者: admin    时间: 2015-1-21 14:00
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 老尸    时间: 2015-1-30 19:45
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 柔情似水    时间: 2015-2-1 15:33
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 金色的骷髅    时间: 2015-2-5 22:04
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 海妖    时间: 2015-2-13 19:55
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 冷月葬花魂    时间: 2015-2-16 08:12
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者: 山那边是海    时间: 2015-2-18 13:15
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 莫相离    时间: 2015-3-3 16:43
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者: 第二个灵魂    时间: 2015-3-11 11:46
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 分手快乐    时间: 2015-3-18 09:05
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 再见西城    时间: 2015-3-22 22:10
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 小魔女    时间: 2015-3-26 20:29
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 小妖女    时间: 2015-4-11 06:12
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 仓酷云    时间: 2015-4-23 06:46
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 不帅    时间: 2015-4-28 02:59
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 蒙在股里    时间: 2015-5-4 04:50
是一种将安全性(Security)列为第一优先考虑的语言
作者: 再现理想    时间: 2015-5-4 19:37
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者: 若天明    时间: 2015-5-12 13:43
是一种突破用户端机器环境和CPU
作者: 兰色精灵    时间: 2015-6-13 22:36
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2