??xml version="1.0" encoding="utf-8" standalone="yes"?>
Java 完全可以的实现多媒体的编辑与处理Q包括图象的处理技术( JGraph Q、动L术( JFlash Q、声韌频技术( JMF Q等{;
Java
对图象处理进行了很好的支持,通过
java
提供的类Q我们完全可以对图象q行各种常见的操作和变换Q?/span>
1?/span>
java囑Ş图象处理所用到的相关类与接口:(x)
java.awt.color、java.awt.grahpics、java.awt.image、 ?br /> java.awt.image.bufferedimage?span style="mso-bidi-font-weight: bold">java.awt.image.LookupOp?/font>
java.awt.image.ConvolveOp?span style="mso-bidi-font-weight: bold">java.awt.image.AffineTransformOp?br /> bufferedimageop接口?qing)其实现cȝQ?/font>
2?span style="FONT: 7pt 'Times New Roman'"> java 囑Ş图象处理可以完成的功能:(x)
图象文g的打开Q浏览)与保存(支持 jpg ?/span> jpeg ?/span> gif ?/span> png {)、放大镜操作、旋转与镜像操作、反色和其他反色、黑白色阈值处理、亮度调整、羃放显C、边~化、图形的锐化和钝化、其它功能等Q?/span> .
3?span style="FONT: 7pt 'Times New Roman'"> java 囑Ş图象处理应用范围?qing)限Ӟ?x)
……………?
二?/span> 实例演示介绍
c/s Demo Q?a href="http://www.aygfsteel.com/Files/soft/javaDrawer.rar">下蝲 Q?/span> ?/span> ?
三?/span> 关于使用 java ?/span> .net 技术实现图片编辑的分析与比?/span>
关于 java ?/span> .net 的争Z来没有停止过?/span>
开放性是
Java
生命力的源泉Q它不属于一个单独的公司Q尽?/span>
Sun
在其中v着关键性的作用。众多世界的公司,例如
IBM
、甲骨文?/span>
BEA
{等Q都?/span>
Java
都给予完全的支持Q正是这P
java
的存在ƈl箋产生一pd不^凡的影响是无庸置疑的Q?/span>
微Y?/span>
.NET
最大的特点是Ҏ(gu)上手。花上两三个月时_(d)你就可以像模像样地当软g工程师了。相比之下,
Java
׃那么Ҏ(gu)。而且Q从软g技术的深度来看Q?/span>
.NET
之中有没有分布式事务处理Q这个问题仍然被许多资深的Y件h员所质疑
?
不过Q是同意 java 中的开发框架模式及(qing)诸多优秀开源组件更有h(hun)|q是要更注重 .net 的开发效率,q要Ҏ(gu)企业以及(qing)目自n来抉择,如果对于一个有着深厚的开发积累或者打在相当一D|间长期用的目来说Q没有采?/span> java 开发^台的是一个不太合理的事情Q因Z长期看来Q新的^台系l的混合使用必然?x)造成一些品的不同q_的重复开发,而另一斚w因ؓ(f) java 独有的设计模式框Ӟ?x)让一?/span> java E序的后期维护变得相当简单容易,由此看来Q它的开发成本ƈ不一定会(x)比其它语a的开发费用要高?/span>
此前Q?/span> Jupitor 公司发布的一个报告显C, 62% 的中企业已l采用了 .NET Q?/span> 36% 的企业则采用Z Java ?/span> IBM WebSphere {服务^台。包括微软公司开发业务的负责人约W哥马利也曄表示Q?/span> Java 未来会(x)变成底层的编E框Ӟ没有人可以通过它赚钱,它将?x)变成一个普通商品。”按照他的预,明天?/span> java 或许q当于今天?/span> C Q?/span>
在图形图片的处理领域内,有许多种不同的编E方式,?/span>
java
技术而言Q可以直接调?/span>
java api
实现Q同时在
java
开源社Z有不开源的lgQ从效率上考虑Q显然后者是一U更好的选择Qƈ且相信在
java
领域内以后一定会(x)有更多更优秀的开放性源码出玎ͼq就?/span>
java
的活?/span>
java
的优势;
四?/span>
设想
Ҏ(gu)
1
Q?/span>
理由Q充分利?/span> Ajax 胖客L(fng)、无h加蝲提交数据?qing)异步通信的特征,构造出 Internet 上极速处理图片及(qing)照片的体验^収ͼ从而大大减用L(fng)待页面刷新的烦恼Q客户在充分n受上|的乐趣的同时对公司的品也留下更ؓ(f)深刻的印象?/span>
优点Q?/span> java q_产品pȝ无关性、安全性、易l护升、开放性等所有优点;
Ҏ(gu) 2 Q多语言q_开发模?/span> ?/span> java q_实现在线~辑囄的功能而以其它语言q_Q如 .net+GAI Q实现本地图片处理功?/span>
理由Q语a本n无所谓好不好Q它只是一个工P它们都是Z品服务的Q而品又是ؓ(f)客户服务的,所以采用什么^台来开发品最l是用户说了, java 的出现本w就是基?/span> Internet 的,因此 B/S 模式下采?/span> java 技术,而以其它语言开发用h面应用程序,扬长避短Q不但可以有效减风险,而且产品开发周期也?x)快很多?/span>
优点Q风险小Q效率高?/span>
copyright@ 彭书?/span>
(4)~写相应Ҏ(gu)的实C?br /> 在编码过E中Q需要注意变量的长度问题Q例如Java的整型变量长度ؓ(f)32位,而C语言?6位,所以要仔细核对变量cd映射表,防止在传DE中出现问题?/font>
(5)JNI实现代码~译成动态链接库
~译q程是利用CQC++~译器实现的Q当要用生成的动态链接库Ӟ调用者类中需要显式调用该链接库?br /> l过上述处理Q基本上完成了一个包含本地化Ҏ(gu)的Javacȝ开发?/font>
3 ZJNI的嵌入式手机软g开发实?br /> 下面通过一个实例来描述q用
JNI技?/font>
在手Z操纵摄像_(d)捕捉视频q存储图片的q程?br /> (1)zdQ状态图
?为捕捉视频ƈ存储囄的活动/状态图
点击查看原图
Ҏ(gu)?的活动/状态,具体的对应步骤如下:(x)
①发赯程?br /> ②发hE后Q徏立文件用于存储图片?br /> ③用指针获得分配的缓冲器Q用于存储获得的帧?br /> ④将指针压栈(序列化缓冲器)。由于手机的内存较小Qؓ(f)了防止内存泄漏,Symbian操作pȝ有一个Cleanup stack的要求,卛_使用指针Ӟ用PushL把指针压入栈中,使用完后再用Pop弹出栈.如果在中间调用导致崩溃的函数时果真出C问题Q那么Clean up stack可以通过调用该指针的析构函数回收占用的空间?br /> ⑤操U|像头Q捕捉视频,q将囑փ从摄像头端传到~冲器?br /> ⑥将摄像头内的图像流存入~冲器内Qƈ缓冲器内的{化ؓ(f)文g,存ؓ(f)jpg格式的文Ӟ指向缓冲器的指针弹栈?br /> ⑦在q程⑥中Q如果用完了序列化的缓冲器Q则要重新序列化~冲器,以备后面使用?br /> ⑧当接收到停止视频捕捉的信号后,关闭文g?br /> ⑨流E结束?br />
(2)q用JNI技?/font>的视频捕?br /> 子功能捕捉视频的实现是由操纵摄像头、视频播?解码器准?以及(qing)建立摄像头和手机之间的连接会(x)话三个活动组成的。其中操U|像头是通过调用底层讑֤的驱动来实现的,需要利用JNI来实玎ͼ完成的方法包括准备、徏立、删除、销毁摄像头{。视频播攄一pdq程也是通过c++代码来实现的Q除了准备、徏立、删除、销毁解码器外,q有开始、暂停、停止解码等。徏立摄像头和手Z间的q接cM建立客户端和服务器连接,视频从摄像头传到手机界面是通过多媒体会(x)话来完成的。多媒体
?x)话的徏立、关闭、摧毁以?qing)?x)话徏立后的发送、取消、读取数据等也是JNI的应用范畴?br />
l语
d采用UJava的h们通常反对本地化代码的使用Q认为JNI技术会(x)影响E序的可UL性和安全性。还有一些h认ؓ(f)Q在JavaE序执行的过E中调用cQc++E序只是对过L合编E技术的单扩展,其实际目的是Z充分利用大量原有的cE序库?br />
其实Q不必拘泥于严格的^台独立性限Ӟ因ؓ(f)采用JNI技术只是针对一些严重媄(jing)响Java性能的代码段。该部分可能只占源程序的极少部分Q所以几乎可以不考虑该部分代码在Lq_之间UL的工作量。同Ӟ也不必过分担心类型匹配问题,完全可以控制代码不出现这U错误。此外,也不必担心安全控刉题,因ؓ(f)Java安全模型已扩展ؓ(f)允许非系l类加蝲和调用本地方法,卛_果在JavaE序中直接调用cQc++语言产生的机器码Q该部分代码的安全性就由Java虚拟机控制?br />
现阶D,计算机应用的普及(qing)、互联网技术的实用以及(qing)U米微电(sh)子技术的H破Q正有力推动着21世纪的工业生产、商业活动、科学实验和家庭生活{领域自动化和信息化q程。全q程自动化品制造、大范围?sh)子商务zd、高度协同科学实验以?qing)现代化家居生活Qؓ(f)嵌入式品造就了崭新而巨大的商机。除了沟通信息高速公路的交换机、\由器和调制解调器Q构机集成刉系l?CIMS)所需的数据传输系lDCS(Data Communication System)和机器h以及(qing)规模较大的家用汽车电(sh)子系l,最有量效益和时代特征的嵌入式产品应数因特|上的信息家?information appliancesQ,如网l可视电(sh)话、网l游戏机、电(sh)子商务、商务?PDA)、移动电(sh)话以?qing)多媒体产?如电(sh)视机盒、DVD播放机、电(sh)子阅L)?/font>
众所周知Q“一ơ编E,到处使用”的
Java
软g概念原本是针对|上嵌入式小讑֤提出的,几经周折Q目前SUN公司已推ZJ2ME(Java 2 P1atform Micro Edition)针对信息家电(sh)的Java版本Q其技术日成熟,开始投入用。SUN公司Java虚拟?JVM)技术的有序开放,使得Java软g真正实现跨^台运行,即Java应用程序能够在带有JVM的Q何硬软gpȝ上执行。加上Java语言本n所h的安全性、可靠性和可移植性等特点Q对实现瘦n上网的信息家늭|络讑֤十分有利Q同时对嵌入式设备特别是上网讑֤软g~程技术生了很大的媄(jing)响?
1 Java的性能问题?qing)几U解x?br /> JavaE序也有其本w的~陷Q那是其效率问题。由于Java是一U介于解释型和编译型之间的语aQ其对内存的理是通过JVM虚拟机来实现的,同样的程序,如果用编译型语言C来实玎ͼ其运行速度一般要比Java快得多。因此,提高Java的性能显得十分重要?/font>
q今为止Qh们ؓ(f)提高Java的运行速度而做出的许多努力Q主要集中在E序设计的方法和模式选择斚w。但是由于算法和设计模式的优化是通用的,对Java有效的优化算法和设计模式Q对其他~译语言也基本适用Q因此不能从Ҏ(gu)上改变JavaE序与编译型语言在执行效率方面的差异?/font>
另外QJIT(Just In TimeQ及(qing)时编?技术也是一个比较好的思想。它的基本原理是Q首先,通过Java~译器把Java源代码编译成与^台无关的二进制字节码。然后,在JavaE序真正执行之前Q系l通过JIT~译器把Java的字节码~译为本地化机器码。最后,pȝ执行本地化机器码Q不用对字节码进行解释。这样做的优Ҏ(gu)Q大大提高了JavaE序的性能Q羃短了加蝲E序的时_(d)同时Q由于编译的l果q不在程序运行期间保存,因此也节U了存储I间。缺Ҏ(gu)Q由于JIT~译器对所有的代码都想优化Q因此同样也占用了很多时间?/font>
动态优化技术即提前~译为机器码的技?dynamicopttmizationQahead of time technology)是提高Java性能的另一个尝试。动态优化技术充分利用了Java源码~译、字节码~译、动态编译和静态编译的技术。其输入是Java的源码或字节码。而输出是l过高度优化的可执行代码和动态库(WindoW中是Qdil文gQUNIX中是׃n?a.so文g)。其优点是能大大提高E序的性能Q缺Ҏ(gu)破坏了Java的可UL性,也对Java的安全带来了一定的隐?zhn)?/font>
2
JNI技?/font>
实际上,有一U通常被忽视的技术可以在很大E度上解册个难题,那就是JNI(Java Native InterfaceQJava本地化方?。图l是JNI技术实现的一般步骤?br />