手机拍照上传的问题

问题描述

手机拍照能运行,但是却无法保存到本地和上传,可是有调用这些方法,还希望各位大虾与高手们能帮我看看哪里出现问题了。小妹在此十分感谢!packagesavatolocal;importjava.io.IOException;importjava.io.OutputStream;importjavax.microedition.io.Connector;importjavax.microedition.io.file.FileConnection;importjavax.microedition.lcdui.Canvas;importjavax.microedition.lcdui.Command;importjavax.microedition.lcdui.CommandListener;importjavax.microedition.lcdui.Displayable;importjavax.microedition.lcdui.Graphics;importjavax.microedition.lcdui.Image;importjavax.microedition.media.Manager;importjavax.microedition.media.Player;importjavax.microedition.media.control.VideoControl;publicclassMyCanvasextendsCanvasimplementsCommandListener,Runnable{privatePlayerplayer=null;privateVideoControlvc=null;PicCanvaspc=null;privateCommandcmdShoot=newCommand("拍照",Command.ITEM,0);privateCommandcmdBack=newCommand("返回",Command.BACK,0);privateImageshowImg=null;privateMainMidletmidlet=null;privatebooleanshootIt=false;privatebooleanrunit=true;privatebooleanfirstSet=true;publicMyCanvas(MainMidletm){midlet=m;runit=true;try{player=Manager.createPlayer("capture://video");player.realize();vc=(VideoControl)player.getControl("VideoControl");if(vc!=null){vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,this);}player.start();}catch(Exceptione){System.out.println("initError:"+e.toString());}this.addCommand(cmdShoot);this.addCommand(cmdBack);this.setCommandListener(this);(newThread(this)).start();}protectedvoidpaint(Graphicsg){try{g.setColor(0xFFFFFF);g.fillRect(0,0,getWidth(),getHeight());if(vc!=null&&firstSet){vc.setVisible(true);vc.setDisplayLocation(3,3);vc.setDisplaySize(this.getWidth()-6,this.getHeight()-6);firstSet=false;}g.setColor(0x0);}catch(Exceptione){System.out.println("no");}}publicvoidcommandAction(Commandcmd,Displayablearg1){if(cmd.equals(cmdShoot)){this.shootIt=true;}elseif(cmd.equals(cmdBack)){midlet.display.setCurrent(midlet.lstMenu);vc=null;player.close();player=null;}}publicImagegetImage(){this.shootIt=false;Imageimg=null;try{byte[]buf;buf=vc.getSnapshot("encoding=jpeg");img=Image.createImage(buf,0,buf.length);}catch(Exceptione){System.out.println("拍照出现错误");}returnimg;}privatevoidsaveToLocal(byte[]byteArray){Stringroot="file:///root1/pxx.jpeg";FileConnectionfc=null;try{fc=(FileConnection)Connector.open(root);System.out.println("fileisExist:"+fc.exists());if(!fc.exists()){fc.create();}OutputStreamos=fc.openOutputStream();os.write(byteArray);os.close();}catch(IOExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}}publicvoidrun(){while(runit){try{Thread.sleep(1000);}catch(Exceptione){System.out.println("no");}repaint();if(this.shootIt){try{showImg=getImage();vc=null;player.close();player=null;runit=false;PicCanvaspc=newPicCanvas(showImg,midlet);midlet.display.setCurrent(pc);byte[]data=pc.getFileBytes();saveToLocal(data);}catch(Exceptione){System.out.println("no");}}}}}

解决方案

解决方案二:
packagesavatolocal;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.util.Hashtable;importjavax.microedition.io.Connector;importjavax.microedition.io.file.FileConnection;importjavax.microedition.lcdui.Canvas;importjavax.microedition.lcdui.Command;importjavax.microedition.lcdui.CommandListener;importjavax.microedition.lcdui.Displayable;importjavax.microedition.lcdui.Graphics;importjavax.microedition.lcdui.Image;publicclassPicCanvasextendsCanvasimplementsCommandListener{privateImageimg=null;privateMainMidletmidlet=null;privatestaticImageshowImg=null;privateintx=0;privateinty=0;privateintwidth=0;privateintheight=0;privateCommandcmdBack=newCommand("返回",Command.BACK,0);privateCommandcmdUp=newCommand("上传",Command.OK,0);publicPicCanvas(Imagepic,MainMidletm){this.img=pic;this.midlet=m;this.width=this.img.getWidth();this.height=this.img.getHeight();this.addCommand(cmdUp);this.addCommand(cmdBack);this.setCommandListener(this);}protectedvoidpaint(Graphicsg){try{showImg=scaleImage(img,this.width,this.height);g.drawImage(showImg,x,y,0);}catch(OutOfMemoryErrore){System.out.println("你的手机不行");}finally{}}publicImagescaleImage(Imagesrc,intdstW,intdstH){intsrcW=src.getWidth();intsrcH=src.getHeight();Imagetmp=Image.createImage(dstW,srcH);Graphicsg=tmp.getGraphics();intdelta=(srcW<<16)/dstW;intpos=delta/2;for(intx=0;x<dstW;x++){g.setClip(x,0,1,srcH);g.drawImage(src,x-(pos>>16),0,Graphics.LEFT|Graphics.TOP);pos+=delta;}Imagedst=Image.createImage(dstW,dstH);g=dst.getGraphics();delta=(srcH<<16)/dstH;pos=delta/2;for(inty=0;y<dstH;y++){g.setClip(0,y,dstW,1);g.drawImage(tmp,0,y-(pos>>16),Graphics.LEFT|Graphics.TOP);pos+=delta;}returndst;}publicvoidcommandAction(Commandcmd,Displayablearg1){if(cmd.equals(cmdBack)){this.midlet.display.setCurrent(midlet.lstMenu);}elseif(cmd.equals(cmdUp)){uploadImage();}}privatevoiduploadImage(){byte[]fileBytes=getFileBytes();if(fileBytes==null){return;}Hashtableparams=newHashtable();params.put("custom_param","param_value");params.put("custom_param2","param_value2");HttpMultipartRequestreq;try{req=newHttpMultipartRequest("http://192.168.1.157:8080/xmpp/upload/upload.action",params,"uploadFile","pxx.png","image/png",fileBytes);byte[]response=req.send();System.out.println(String.valueOf(response));}catch(Exceptione){e.printStackTrace();}}byte[]getFileBytes(){showImg=scaleImage(img,this.width,this.height);Stringroot="file:///root1/pxx.jpeg";FileConnectionfc=null;byte[]a=null;try{fc=(FileConnection)Connector.open(root);System.out.println("fileisExist:"+fc.exists());if(!fc.exists()){fc.create();returna;}int[]raw=newint[showImg.getWidth()*showImg.getHeight()];showImg.getRGB(raw,0,showImg.getWidth(),0,0,showImg.getWidth(),showImg.getHeight());byte[]data=null;InputStreamis=fc.openInputStream();ByteArrayOutputStreamout=newByteArrayOutputStream(4096);byte[]tmp=convertIntToByte(raw);intn;while((n=is.read(tmp))!=-1){out.write(tmp,0,n);out.flush();}is.close();out.close();data=out.toByteArray();if(fc!=null){fc.close();}returndata;}catch(IOExceptione1){e1.printStackTrace();}returnnull;}/*publicbyte[]getByteArray(Imageimage){int[]raw=newint[image.getWidth()*image.getHeight()];image.getRGB(raw,0,image.getWidth(),0,0,image.getWidth(),image.getHeight());byte[]data=convertIntToByte(raw);returndata;}*/privatestaticbyte[]convertIntToByte(int[]data){if(data==null){returnnull;}byte[]byteArr=newbyte[data.length<<2];for(inti=0;i<data.length;i++){intnum=data[i];byteArr[i*4+0]=(byte)(num>>>0);byteArr[i*4+1]=(byte)(num>>>8);byteArr[i*4+2]=(byte)(num>>>16);byteArr[i*4+3]=(byte)(num>>>24);}returnbyteArr;}}
解决方案三:
packagesavatolocal;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Enumeration;importjava.util.Hashtable;importjavax.microedition.io.Connector;importjavax.microedition.io.HttpConnection;publicclassHttpMultipartRequest{staticfinalStringBOUNDARY="----------V2ymHFg03ehbqgZCaKO6jy";byte[]postBytes=null;Stringurl=null;publicHttpMultipartRequest(Stringurl,Hashtableparams,StringfileField,StringfileName,StringfileType,byte[]fileBytes)throwsException{this.url=url;Stringboundary=getBoundaryString();StringboundaryMessage=getBoundaryMessage(boundary,params,fileField,fileName,fileType);StringendBoundary="rn--"+boundary+"--rn";ByteArrayOutputStreambos=newByteArrayOutputStream();bos.write(boundaryMessage.getBytes());bos.write(fileBytes);bos.write(endBoundary.getBytes());this.postBytes=bos.toByteArray();bos.close();}StringgetBoundaryString(){returnBOUNDARY;}/*****req=newHttpMultipartRequest("http://192.168.1.14/li/b.php",params,"upload_field","original_filename.png","image/png",fileBytes);byte[]response=req.send();System.out.println(String.valueOf(response));*@paramboundary*@paramparams*@paramfileField*@paramfileName*@paramfileType*@return*/StringgetBoundaryMessage(Stringboundary,Hashtableparams,StringfileField,StringfileName,StringfileType){StringBufferres=newStringBuffer("--").append(boundary).append("rn");Enumerationkeys=params.keys();while(keys.hasMoreElements()){Stringkey=(String)keys.nextElement();Stringvalue=(String)params.get(key);res.append("Content-Disposition:form-data;name="").append(key).append(""rn").append("rn").append(value).append("rn").append("--").append(boundary).append("rn");}res.append("Content-Disposition:form-data;name="").append(fileField).append("";filename="").append(fileName).append(""rn").append("Content-Type:").append(fileType).append("rnrn");returnres.toString();}publicbyte[]send()throwsException{HttpConnectionhc=null;InputStreamis=null;ByteArrayOutputStreambos=newByteArrayOutputStream();byte[]res=null;try{hc=(HttpConnection)Connector.open(url);hc.setRequestProperty("Content-Type","multipart/form-data;boundary="+getBoundaryString());hc.setRequestMethod(HttpConnection.POST);OutputStreamdout=hc.openOutputStream();dout.write(postBytes);dout.close();intch;is=hc.openInputStream();while((ch=is.read())!=-1){bos.write(ch);}res=bos.toByteArray();}catch(Exceptione){e.printStackTrace();}finally{try{if(bos!=null)bos.close();if(is!=null)is.close();if(hc!=null)hc.close();}catch(Exceptione2){e2.printStackTrace();}}returnres;}}
解决方案四:
packagesavatolocal;importjavax.microedition.lcdui.Command;importjavax.microedition.lcdui.CommandListener;importjavax.microedition.lcdui.Display;importjavax.microedition.lcdui.Displayable;importjavax.microedition.lcdui.List;importjavax.microedition.midlet.MIDlet;importjavax.microedition.midlet.MIDletStateChangeException;publicclassMainMidletextendsMIDletimplementsCommandListener{ListlstMenu;Displaydisplay;CommandcmdSelect;MyCanvasmyCan;Stringname="手机拍照";publicMainMidlet(){display=Display.getDisplay(this);lstMenu=newList(name,List.IMPLICIT);lstMenu.append("拍照",null);lstMenu.append("退出",null);cmdSelect=newCommand("确定",Command.OK,0);lstMenu.addCommand(cmdSelect);lstMenu.setCommandListener(this);}protectedvoidstartApp()throwsMIDletStateChangeException{display.setCurrent(lstMenu);}publicvoidcommandAction(Commandcmd,Displayabledis){if(cmd.equals(cmdSelect)){switch(lstMenu.getSelectedIndex()){case0:myCan=newMyCanvas(this);display.setCurrent(myCan);break;case1:this.notifyDestroyed();break;}}}protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{//TODOAuto-generatedmethodstub}protectedvoidpauseApp(){//TODOAuto-generatedmethodstub}}
解决方案五:
该回复于2011-04-01 13:44:38被版主删除
解决方案六:
运行了一下。。Warning:Toavoidpotentialdeadlock,operationsthatmayblock,suchasnetworking,shouldbeperformedinadifferentthreadthanthecommandAction()handler.你联网上传的代码需要单开一个线程。
解决方案七:
该回复于2011-04-06 11:15:04被版主删除

时间: 2024-08-17 03:12:05

手机拍照上传的问题的相关文章

php实现视频拍照上传头像功能实例代码

现在手机拍照很火,那么如何使用手机拍照并上传头像呢?原因很简单,就是数据传递,首先手机传递照片信息,这个就不是post传递 也不是get函数传递, 这个另外一种数据格式传递,使用的是$GLOBALS ['HTTP_RAW_POST_DATA'],这个系统函数跟post很相似,但是$GLOBALS ['HTTP_RAW_POST_DATA']支持的数据格式更丰富些,详细的区别请自己百度谷歌. 设计流程就是: $GLOBALS ['HTTP_RAW_POST_DATA']传递照片数据流(二进制)–>

手机端用HTML5实现拍照上传功能

HTML5实现WAP网站拍照上传功能 做web应用想达到这样的效果: 目前网上发布的教程中,大多数介绍HTML5网页拍照上传都是基于canvas调用摄像头,并转化为数据流进行传输,服务器解码并写入文件.前前后后代码好几百行,影响性能不说,达到的效果也不是我们想要的. 经过分析百度贴吧等网页端的代码,发现实现的技术其实很简单,就是下面这个input: <input type="file" name="pic" id="pic" accept=

Android 高仿微信朋友圈拍照上传功能

模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. PhotoPicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间左右滑动互相切换的库,同时支持图片删除的库,效果类似微信. (1) 添加PhotoPicker的架包 (2) 使用 选择图片:安卓6.0以后需要在代码中添加读写sd卡和相机的权限 当然清单文件中也需要添加的 PhotoPicker.builder() .setPhotoCount(maxPhoto)

酷盘如何使用酷盘iPhone手机客户端上传照片

  酷盘使用酷盘iPhone手机客户端上传照片的方法如下: 1.启动酷盘. 2.初次运行酷盘手机客户端,如果已拥有酷盘账号,则输入账号密码并登录即可.如果尚无酷盘账号,请先点击[注册账号]来注册酷盘账号.登录/注册完成之后,将自动跳转至酷盘主界面. 3.点击[+]按钮,进入相册界面. 4.进入某一相册,选择需要上传的照片,点击[上传]按钮即可. 5.点击下图红框内的区域,可用来更改照片目标上传位置. 6.上传过程中,可点击下图红框内的区域,查看上传进度.

cordova 拍照上传时设置的一些参数的具体说明

问题描述 cordova 拍照上传时设置的一些参数的具体说明 下面这段代码,getPicture 里面的quality .destinationType .correctOrientation这些都是用来设置什么的??? targetWidth 和 targetHeight 是固定照片的大小吗 ??? navigator.camera.getPicture(onPhotoSuccess, onPhotoFail, { quality: 70, destinationType: destinati

Android4.4 WebAPI实现拍照上传功能_Android

网上有很多关于拍照上传的实现方法,如果用新版本android去运行有可能会发现根本实现不了.主要原因是android从4.4版本开始通过intent.ACTION_GET_CONTENT打开选择器后,getData()返回的URI没有包含真实的文件路径,而是像这样"content://com.android.providers.media.documents/document/image:1234",以至于用传统的方式找不到图片的路径.最简单的解决办法是用intent.ACTION_P

android 拍照上传照片

问题描述 android 拍照上传照片 android ,Activity S需要拍照上传照片,但是点用相机后,S会刷新界面,怎么破? Activity S的属性是: android:name="com.example.activity.S" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan" > 解决方案 http://bbs.9ria.

网上惊现曝工资软件 任何人都能把工资条拍照上传

最近出了一个神奇的曝工资软件,任何人都可以把自己的工资条拍照上传到里面,而且还可以查看上千条职位的信息,被网友称作是神器. 这款软件在设计与运营商也颇下精力,比如产品提供了社交分享,用户分享后可以获得更多查询次数.软件偶尔也会在小米社区做活动营销,依靠一台红米赚了 18000 条回复. 据了解,该软件的核心成员只有5个人,包括3个产品以及运营人员和2个开发人员.谈及用户对隐私泄露的顾虑,曝工资团队表示不会对用户个别建档,用户上传工资条时也可以主动把姓名和工号抹去,所以不必太过担心. 目前,这款曝

急!怎样在j2ee中实现摄像头拍照上传?

问题描述 哪位知道怎样在j2ee中实现摄像头拍照上传?着急啊! 解决方案 解决方案二:光J2EE做不了这活,因为你需要有本地代码(exe/dll/ocx)来驱动摄像头.解决方案三:该回复于2011-04-29 09:15:29被版主删除解决方案四:拍照后把相片存在相应的位置然后使用文件上传不可以么?解决方案五:该回复于2011-04-29 09:39:40被版主删除解决方案六:该回复于2011-04-29 09:47:03被版主删除解决方案七:该回复于2011-04-29 09:32:45被版主