手机定时拍照并保存到手机的存储卡里面,打开图片显示格式错误

问题描述

mVideoControl.getSnapshot("图片格式");在手机里面,这里的图片格式应该怎么填啊,是天"encoding=jpeg"吗?我改成不同的格式就会得到不同的效果,有时候改的格式打开图片时显示格式错误!大家讨论下在J2ME里面这里的图片格式该怎么填!具体问题如下!!大家帮忙看看,下面这程序是首先进入拍照周期设置界面,设置好后按OK就开始拍照,隔一段周期拍照一次,然后保存到手机存储卡内,帮忙看下下面的代码:定时拍照后能保存到手机存储卡里面,可是保存到手机的图片打开时显示“格式错误”,我怀疑是我捕获的时候格式错了,帮忙看看importjava.io.IOException;importjava.io.OutputStream;importjava.util.Calendar;importjava.util.Timer;importjava.util.TimerTask;importjavax.microedition.io.Connector;importjavax.microedition.io.file.FileConnection;importjavax.microedition.lcdui.Alert;importjavax.microedition.lcdui.Canvas;importjavax.microedition.lcdui.Command;importjavax.microedition.lcdui.CommandListener;importjavax.microedition.lcdui.Display;importjavax.microedition.lcdui.Displayable;importjavax.microedition.lcdui.Font;importjavax.microedition.lcdui.Form;importjavax.microedition.lcdui.Graphics;importjavax.microedition.lcdui.TextField;importjavax.microedition.media.Manager;importjavax.microedition.media.MediaException;importjavax.microedition.media.Player;importjavax.microedition.media.control.VideoControl;importjavax.microedition.midlet.MIDlet;//MIDletpublicclassSnapperMIDletextendsMIDletimplementsCommandListener{privateDisplaymDisplay;privateFormmMainForm;//创建播放器对象privatePlayermPlayer;//创建视频控制器接口privateClockCanvascan;privateVideoControlmVideoControl;privateCommandexit=newCommand("退出",Command.EXIT,1);privateCommandok=newCommand("确定",Command.SCREEN,1);privateCommanddelete=newCommand("删除",Command.BACK,1);privateTextFieldtxf=newTextField("拍照频度(S)","",12,TextField.NUMERIC);intb;staticintsum=0;privatestaticintj=0;char[]a;publicSnapperMIDlet(){super();mDisplay=Display.getDisplay(this);can=newClockCanvas();//can.setFullScreenMode(true);//全屏mMainForm=newForm("在线取照");mMainForm.append(txf);mMainForm.addCommand(exit);mMainForm.addCommand(ok);mMainForm.addCommand(delete);mMainForm.setCommandListener(this);}publicvoidstartApp(){//设置ClockCanvas对象为当前显示对象mDisplay.setCurrent(mMainForm);}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){}publicvoidcommandAction(Commandc,Displayabled){if(c==exit){destroyApp(false);notifyDestroyed();}elseif(c==ok&&(txf.getString().length()>0)){//得到TextField框中的字符串,然后转换成字符数组,再转换成数字a=txf.getString().toCharArray();//得到字符串并转换成数组b=txf.getString().length();//得到字符串长度for(inti=0;i<b;i++)//将字符数组转换成数字{sum*=10;System.out.println(a);sum=sum+a-48;}mDisplay.setCurrent(can);//启动摄像头showCamera();}elseif(c==delete&&(txf.getString().length()>0)){txf.delete(txf.getCaretPosition()-1,1);}}//定时器任务执行classClockTimerTaskextendsTimerTask{privateinti=0;privateintj=sum;publicvoidrun(){i++;if(sum!=0){j=sum;if(i%j==0){newHttpThread().start();//sum为输入的拍照周期,一个周期到后就拍照}}}}//显示照相屏幕privatevoidshowCamera(){try{//创建播放器对象mPlayer=Manager.createPlayer("capture://video");//使摄像头处于就绪状态mPlayer.realize();//创建视频控制器接口mVideoControl=(VideoControl)mPlayer.getControl("VideoControl");//新建Canvas画布对象CameraCanvascanvas=newCameraCanvas(this,mVideoControl);mDisplay.setCurrent(canvas);//启动摄像头mPlayer.start();}catch(IOExceptionioe){handleException(ioe);}catch(MediaExceptionme){handleException(me);}}classHttpThreadextendsThread{byte[]data=null;byte[]img=null;FileConnectionfc=null;OutputStreamos=null;Stringpath=null;publicvoidrun(){j++;try{data=mVideoControl.getSnapshot("encoding=jpeg"+"width=160"+"height=120");//拍照,设置照片格式为png,宽度和大小固定}catch(MediaExceptionex){ex.printStackTrace();}path="file://localhost/"+"PhoneDisk:/"+"zmy"+j+"."+"jpeg";try{fc=(FileConnection)Connector.open(path);if(!fc.exists())fc.create();else{fc.truncate(0);}os=fc.openOutputStream();os.write(data,0,data.length);os.close();os.flush();fc.close();os=null;fc=null;}catch(IOExceptionioe){System.out.println("异常=");}}}//处理异常privatevoidhandleException(Exceptione){Alerta=newAlert("Exception",e.toString(),null,null);a.setTimeout(Alert.FOREVER);mDisplay.setCurrent(a,mMainForm);}//低级用户界面,画相框classCameraCanvasextendsCanvasimplementsCommandListener{privateCommandcmdExit=newCommand("退出",Command.EXIT,1);publicCameraCanvas(SnapperMIDletmidlet,VideoControlvideoControl){intwidth=getWidth();intheight=getHeight();this.addCommand(cmdExit);this.setCommandListener(this);videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,this);try{videoControl.setDisplayLocation(2,2);//设置取照界面的左上角坐标videoControl.setDisplaySize(width-4,height-4);//设置取照界面大小}catch(MediaExceptionme){try{videoControl.setDisplayFullScreen(true);}catch(MediaExceptionme2){}}videoControl.setVisible(true);}publicvoidcommandAction(Commandc,Displayabled){if(c==cmdExit){destroyApp(false);notifyDestroyed();}}publicvoidpaint(Graphicsg){intwidth=getWidth();intheight=getHeight();//绘制VideoControl控件的边框g.setColor(0x000000);g.drawRect(0,0,width-1,height-1);g.drawRect(1,1,width-3,height-3);}}//定时器显示界面classClockCanvasextendsCanvasimplementsCommandListener{//定义定时器privateTimertimer;privateClockTimerTasktimerTask;privateCommandcmdBack=newCommand("返回",Command.EXIT,1);ClockCanvas(){timer=newTimer();timerTask=newClockTimerTask();timer.schedule(timerTask,1000,1000);//每一秒执行一次this.addCommand(cmdBack);this.setCommandListener(this);}publicvoidcommandAction(Commandc,Displayabled){if(c==cmdBack){mDisplay.setCurrent(mMainForm);}}/***在这个方法中绘制屏幕*/protectedvoidpaint(Graphicsg){//清除屏幕-背景黑色g.setColor(0x000000);g.fillRect(0,0,this.getWidth(),this.getHeight());g.setColor(0xff0000);Fontfont=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE);g.setFont(font);g.drawString(getTimeStr(),getWidth()/2,getHeight()/2,Graphics.TOP|Graphics.HCENTER);}/***返回表示当前时间的字符串*/privateStringgetTimeStr(){Calendarcal=Calendar.getInstance();inthour_of_day=(int)cal.get(Calendar.HOUR_OF_DAY)+8;intminute=(int)cal.get(Calendar.MINUTE);intsecond=(int)cal.get(Calendar.SECOND);intyear=(int)cal.get(Calendar.YEAR);intmonth=(int)cal.get(Calendar.MONTH)+1;intday=(int)cal.get(Calendar.DAY_OF_MONTH);returnyear+"-"+month+"-"+day+""+hour_of_day+":"+minute+":"+second;}}}

解决方案

解决方案二:
没人回答,往上顶
解决方案三:
好长。顶了
解决方案四:
是不是文件扩展名和类型不一样呀
解决方案五:
System.getProperty("video.snapshot.encodings")==快照格式试一下吧~~
解决方案六:
问下楼主你这程序在哪个机子上能跑啊
解决方案七:
mVideoControl.getSnapshot("图片格式");应该是这么填的:Stringstr="encoding=jpeg&width=800&height=600";mVideoControl.getSnapshot(str);还可以填:Stringstr="encoding=pcm&width=800&height=600";
解决方案八:
packageprj1_1_3;importjavax.microedition.midlet.MIDlet;importjavax.microedition.midlet.MIDletStateChangeException;publicclassMidlet1extendsMIDlet{publicMidlet1(){super();}protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{this.notifyDestroyed();}protectedvoidpauseApp(){this.notifyPaused();}protectedvoidstartApp()throwsMIDletStateChangeException{Stringprop=System.getProperty("audio.encodings");if(prop!=null){System.out.println("照相机支持的图片格式:n"+prop);}}}

MOTODEVSDKforJava(TM)ME3.x测试的结果是:encoding=audio/amrencoding=audio/amr-wbStringstr="encoding=audio/amr&width=800&height=600";Stringstr="encoding=audio/amr-wb&width=800&height=600";

解决方案九:
谢谢大家,已经解决了
解决方案十:
THX

时间: 2024-07-29 11:04:58

手机定时拍照并保存到手机的存储卡里面,打开图片显示格式错误的相关文章

美拍视频可以保存到手机?美拍视频保存到手机教程

美拍是什么工具我们估计都知道了,他就是一个可以后视频并且分享的工具了,下面来看看. 1.其实我们是可以进行设置了,我们在打开美拍首界面左下角的按钮 ,然后在弹出界面选择"设置"打开进入. 2.然后我们找到"设置"下面的有一个"保存处理过的视频"打开这个开关了. 3.设置好了,拍的视频不管分享还是其它操作都会把"视频存到手机"一份的呼. 具体视频在手机的位置是在手机的"文件夹--DCIM--Camera"了,

C#实现手机拍照并且保存水印照片_C#教程

图像采集需要调用摄像头就行拍照操作,网上查了一下资料,需要引用以下3个dll. 看一下运行界面 界面都比较low,主要是功能实现. private void Camera_Load(object sender, EventArgs e) { this.btnSave.Enabled = false; try { borderSize = GetBorderSize(this); captionHeight = GetCaptionHeight(this); //InitStudent("&quo

求救-大神们帮帮忙,小米手机实现拍照照片上传怎么弄的?为啥别的手机可以,他的不兼容呢?

问题描述 大神们帮帮忙,小米手机实现拍照照片上传怎么弄的?为啥别的手机可以,他的不兼容呢? 小米手机实现拍照照片上传怎么弄的?为啥别的手机可以,他的不兼容呢? 解决方案 因为小米手机的系统深度定制过的,建议root下 解决方案二: 1.小米也是安卓系统,通过QQ就可以将照片传入电脑.也可将电脑的照片传入手机. 2.你也可以通过USB,连接电脑与手机,直接拷贝. 解决方案三: 应该可以吧,我看到有那个功能,不行就问问客服

wi-fi-Android wifi密码不保存到手机WIFI连接当中也能连接WIfi?

问题描述 Android wifi密码不保存到手机WIFI连接当中也能连接WIfi? WIFI连接每次都需要将配置信息保存到手机,ROOT后的手机能查看连接过WIfi的密码,求大神给出连接WIFI后,去手机配置信息里查看不到保存的WIFI密码. 解决方案 关于连接无密码的wifi问题Android手机与ide通过wifi连接wifi连接进行调试 解决方案二: 这个是android wifi原生的设置,你没办法绕过,除非自己定制ROM

url-把图片到保存到手机本地相册

问题描述 把图片到保存到手机本地相册 如果我有图片的URl地址能通过这个地址拿到图片,但是在手机端怎么实现通过url保存到手机本地呢,求解

安卓开发app 视频提取一部分保存在手机内。如何实现求源码。新手跪求!!!

问题描述 安卓开发app 视频提取一部分保存在手机内.如何实现求源码.新手跪求!!! 想把手机里的一个时间长的视频提取中间的一部分另存在手机内.方便以后使用.!!! 解决方案 可以用ffmpeg来提取视频.http://blog.chinaunix.net/uid-20771867-id-4114253.html 解决方案二: 一楼回答的即可.就是用ffmpeg来做. 或者用第三方的库来实现.www.vitamio.org/ 或者 趣拍SDK (阿里百川出品.)

app-APP中的拍照功能在有的手机上是可以的,有的手机上就不能拍照时为什么?和手机的版本有关系吗?

问题描述 APP中的拍照功能在有的手机上是可以的,有的手机上就不能拍照时为什么?和手机的版本有关系吗? APP中的拍照功能在有的手机上是可以的,有的手机上就不能拍照时为什么?和手机的版本有关系吗?怎么解决手机版本的兼容性 解决方案 猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪猪 解决方案二: 有些手机不允许在一些文件夹下保持文件 解决方案三: 可以的.有些咳咳咳咳咳咳

小米小咖秀视频保存到手机相册的方法

注意:下面介绍的是安卓手机操作办法,如果是苹果手机直接保存到本地就到了手机相册了. 1.如我们录制视频之后点击"存至本地",就这么简单视频就成功保存到手机相册中了了 2.如果是安卓手机我们进入到"文件管理"细节哪下所示 3.接着我们再找到下面的"视频"选项,打开进入. 4.你就会看到刚刚录制的视频.点击详情. 5.并且我们知道视频保存在手机中具体的存储位置了

手机百度浏览器文件保存位置怎么修改?

我们本文章介绍的是手机百度浏览器最新版本了,所以各位朋友升级最新版本是关键芽. 方法一.下载时更改 1.我们在下载资源时在弹出的窗口我们点击[齿轮]标志 2.之后我们再点击[上一级]按钮,如下图所示   3.然后我们找到自己要下载的目录了.   方法二.菜单里更改 1.如果要实现所有的都在这个位置,我们可以点击[菜单]标志 2.进入到界面的[下载管理]中了,我们点击它打开 3.之后我们再找到界面中的[齿轮]标志 细节如下图所示 4.然后我们在下载目录中点击[齿轮]标志可更改 经验分享其实这样操作