HuDon的专栏

JavaFeng 之IT研究!Enjoy Life with Sun...

用户操作
[即时聊天] [发私信] [加为好友]
剑锋ID:HuDon
294167次访问,排名189好友119人,关注者123
HuDon的文章
原创 194 篇
翻译 0 篇
转载 40 篇
评论 92 篇
剑锋的公告
最近评论
sudun_03:请问你们有没有想过为什么要学这些,有意思么,有意义么
Tsum1987:很值得借鉴!
wawawa2222:太多了...
HuDon:先要涉猎广泛 然后在面广的基础上有所深入 学好学精
不要只懂面上的东西就以为学会了 需要既知其然也要知其所以然....
就技术领域而言 好多东西都是相通的...c#可以看到java的影子 .net框架与j2ee其实都能找到相通之处的...
zgxzowen:太广泛了,基本学不完全,这样你只能通但是不精
文章分类
收藏
相册
奥运圣火
appfuse研究
appfuse in china
appfuse项目官方网站
blog名人堂
Efei的网摘
台湾侯捷
张孝祥老师得Blog
方兴东blog
满江红-曹晓钢
走近郭安定
透明的blog
IDE开发利器
IT发展趋势
Java研究
J2EE网站
Sun公司网址
孙卫琴个人网站
UML研究
umlchina中国
UMLchina研究组织
UML软件工程组织
国产Apusic应用服务器开发研究
金蝶中间件
开源技术研究
一个为开源项目提供免费服务的平台
在春天旁边
敏捷Java开源社区-agilejava.org
简易Java框架
靠牛网
设计模式研究
网络创业研究--基于网络的英里模式探讨
中间件应用
资源站点
ajax4jsf用户指南
AjaxFaces项目-使JSF得UI组件添加ajax功能
Appfuse--一个指导性的入门级J2EE开发框架
bea课堂
HTML终结者者--XHTML
java的足迹-张俊
jolt大奖官网--告诉你何谓价值
JSF学习社区
JSF资源例程
专注于java技术
个人图书馆
互联网实验室
国内开源介绍
国外商业组件开发站点
开源得内容管理系统
开源爱好者
得益网
江南白衣网站
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 J2ME发送图片到Servlet(错误修正)收藏

新一篇: 全面分析MIDP通信API和外部系统交互 | 旧一篇: 用J2ME实现简单电子邮件发送功能

        很抱歉,在J2ME平台发送图片到servlet那篇文章中,我忽略了一个细节没有进行数据类型的转换。这样会导致图片像素的损失,发送到服务器的图片失真。现在将代码重新更新一下,给大家带来不便还请原谅。

public synchronized void connHttp(){
while(true){
System.out.println("httpconn wait now");
if((midplet.getIsSending())){
System.out.println("search");
try{
con=(HttpConnection)Connector.open(URL);
con.setRequestMethod(HttpConnection.POST);
con.setRequestProperty("If-Modified-Since",
             "29 Oct 1999 19:43:31 GMT");
            con.setRequestProperty("User-Agent",
             "Profile/MIDP-2.0 Configuration/CLDC-1.0");
            con.setRequestProperty("Content-Language", "en-US");


os=new DataOutputStream(con.openOutputStream());
int[] rgbArg=new int[100*100];
midplet.getImage().getRGB(rgbArg,0,100,0,0,100,100);
byte[] bytes=intTobyte(rgbArg);
os.write(bytes);


//for(int i=0;i<RGBARG.LENGTH;I++){
//os.writeInt(rgbArg[i]);
//System.out.println(rgbArg[i]);
//}

os.flush();

}catch(Exception e){
System.out.println("conn err");
e.printStackTrace();
}finally{
if(os!=null){
try{
os.close();
midplet.setIsSending(false);
midplet.setIsSend(true);
}catch(IOException ioe){};
}
}

 

 

midplet.setIsSending(false);
midplet.setIsSend(true);
}
try{
wait();
}catch(Exception e){
System.out.println("wait exception");
e.printStackTrace();
}
}


}

public synchronized void wakeUP(){
notifyAll();
}
private byte[] intTobyte(int[] ints){
byte[] bytes=new byte[ints.length*4];
for(int i=0;i<INTS.LENGTH;I++){
bytes[i*4]=(byte)(0xff&(ints[i]>>>24));
bytes[i*4+1]=(byte)(0xff&(ints[i]>>>16));
bytes[i*4+2]=(byte)(0xff&(ints[i]>>>8));
bytes[i*4+3]=(byte)(0xff&(ints[i]>>>0));
if(i<100){
System.out.println(ints[i]);
}
}

return bytes;
}

客户端的,比上一次多了,一个方法intTobyte()通过这个方法,获得了一个byte类型的数组,直接发送,服务器端,在将这个byte数组还原成一个int数组

=========================================
private void createIamge(DataInputStream io,OutputStream out){
int width = 100;
int height = 100;
int[] rgb=new int[width*height];
try{
int[] bytes=new int[rgb.length*4];
//io.readu(bytes);
//rgb=byteToInt(bytes);
for(int i=0;i<BYTES.LENGTH;I++){
bytes[i]=io.readUnsignedByte();
}
byteToInt(bytes,rgb);

}catch(IOException ioe){ioe.printStackTrace();}
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bi.setRGB(0,0,100,100,rgb,0,100);
bi.flush();
// encode:
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
System.out.println("yeah");
try {
encoder.encode(bi);
}
catch(IOException ioe) {
 ioe.printStackTrace();
}

}

private void byteToInt(int[] bytes,int[] rgb){

for(int i=0;i<RGB.LENGTH;I++){
rgb[i]=(
((bytes[i*4]&0xff)<<24)|
((bytes[i*4+1]&0xff)<<16)|
((bytes[i*4+2]&0xff)<<8)|
((bytes[i*4+3]&0xff)<<0));
//System.out.print(ints[i]+"\t"+(ints[i]<<8)+"\t");
if(i<100){

System.out.println(rgb[i]);

}
}


}

上面的是服务器端代码,重点在于readUnsignedByte()这方法。不然很难还原int类型。

发表于 @ 2006年06月24日 01:55:00|评论(loading...)|编辑

新一篇: 全面分析MIDP通信API和外部系统交互 | 旧一篇: 用J2ME实现简单电子邮件发送功能

评论

#syztf 发表于2008-07-22 16:21:50  IP: 210.74.155.*
可否把手机发送图片到servlet的项目传给我,我有的地方不太理解,我邮箱syztf@163.com MSN:sy@asiatelecom.cn 谢谢
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 剑锋