仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1291|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA教程之JAVA天生JPG缩略图

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:40:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。缩略图在任何一个综合性网站,我们常常必要上传一些图片材料。但跟着高分辩率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来完成图片的复制、信息猎取、斜角、殊效、组合、改动巨细、加边框、扭转、切片、改动格局、往色等等功效。



前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-25 20:33:50 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
小魔女 该用户已被删除
板凳
发表于 2015-1-26 22:39:39 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
只想知道 该用户已被删除
地板
发表于 2015-2-1 07:30:30 来自手机 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
深爱那片海 该用户已被删除
5#
发表于 2015-2-4 19:55:54 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
6#
发表于 2015-2-7 09:30:51 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
灵魂腐蚀 该用户已被删除
7#
发表于 2015-2-9 17:11:59 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
变相怪杰 该用户已被删除
8#
发表于 2015-2-23 17:40:10 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
admin 该用户已被删除
9#
发表于 2015-3-7 09:50:27 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
老尸 该用户已被删除
10#
发表于 2015-3-14 17:56:53 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
海妖 该用户已被删除
11#
发表于 2015-3-15 22:05:34 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
谁可相欹 该用户已被删除
12#
发表于 2015-3-21 00:51:55 | 只看该作者
是一种使用者不需花费很多时间学习的语言
若天明 该用户已被删除
13#
发表于 2015-4-1 00:00:45 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
兰色精灵 该用户已被删除
14#
发表于 2015-4-6 18:10:20 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
飘灵儿 该用户已被删除
15#
发表于 2015-4-10 08:50:06 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
山那边是海 该用户已被删除
16#
发表于 2015-4-13 21:46:54 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
蒙在股里 该用户已被删除
17#
发表于 2015-4-20 20:14:41 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
金色的骷髅 该用户已被删除
18#
发表于 2015-5-1 20:09:17 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
再见西城 该用户已被删除
19#
发表于 2015-6-6 19:37:39 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 21:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表