基于opencv的相机之图片处理首页效果(六)
2015-11-11 19:39
507 查看
简介
通过之前,已经有了预览拍照,以及对应图片显示的基本图库。接下来实现对图库中选中的图片,进行进一步的图像处理。 本篇是实现图像处理的总体界面实现。
具体实现
效果演示
对应的效果截图如下:
代码讲解
1、从上面的效果图上可以看到,最上面也是两个选项,取消和保存。点击取消,就会清楚掉该图片本轮对图片的相关处理,并返回到图库界面。点击保存,就会将本轮被修改处理过的图片另存为,并返回图库界面。
picDoVariable.mypicBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub new AlertDialog.Builder(PicDoing.this).setMessage("确认放弃修改?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(PicDoing.this, mapstorageActivity.class); startActivity(intent); finish(); }}) .setNegativeButton("取消",null) .show(); } }); picDoVariable.mypicSave.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String tmp, PicPath; long time =System.currentTimeMillis(); tmp = picDoVariable.picDoFunction.getCurrentTime(time); PicPath = picDoVariable.doPicSavepath + tmp + ".jpg"; Imgcodecs.imwrite(PicPath, picDoVariable.myPicDoMat); Intent intent = new Intent(PicDoing.this, mapstorageActivity.class); startActivity(intent); finish(); } });
2、中间区域则显示的图片传过来,即需要被处理的图片,该图片被传入到本界面之后,首先会被复制到一个新图片临时文件,后续的操作都是在这个临时文件中处理,如果点击取消,就放弃掉这个临时文件,点击保存就将该临时文件保存到图像目录中去。
if(picDoVariable.doPicEdit == -1){ picDoVariable.myPicDoMat = Imgcodecs.imread(picDoVariable.DoPicNames[picDoVariable.curDoPicNumber], 1); Imgcodecs.imwrite(picDoVariable.tmpMatName, picDoVariable.myPicDoMat); }else{ picDoVariable.myPicDoMat = Imgcodecs.imread(picDoVariable.tmpMatName, 1); }
3、最底下就是进行图像处理的相关选项:
public String[] firstPicMenu = { "调整", "特效", "马赛克", "拼图", "鬼怪贴图", "图像修补", "加密解密"}; picDoVariable.mypicModeGestureDetector = new GestureDetector(new gestureListener()); private class gestureListener implements GestureDetector.OnGestureListener{ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { int i; if(e1.getX() - e2.getX() > picDoVariable.picModeFilpDistance){ if(picDoVariable.modeOffsetNumber < picDoVariable.modeNumber - 6){ picDoVariable.modeOffsetNumber += 1; } for(i=0; i<6; i++){ picDoVariable.mypicDoImageButton_1_1[i].setImageResource(picDoVariable.firstPicMenuPicture[(i+picDoVariable.modeOffsetNumber)*2]); picDoVariable.mypicDoTextView_1[i].setText(picDoVariable.firstPicMenu[(i + picDoVariable.modeOffsetNumber)]); } } if(e2.getX() - e1.getX() > picDoVariable.picModeFilpDistance){ if(picDoVariable.modeOffsetNumber > 0){ picDoVariable.modeOffsetNumber -= 1; } for(i=0; i<6; i++){ picDoVariable.mypicDoImageButton_1_1[i].setImageResource(picDoVariable.firstPicMenuPicture[(i+picDoVariable.modeOffsetNumber)*2]); picDoVariable.mypicDoTextView_1[i].setText(picDoVariable.firstPicMenu[(i + picDoVariable.modeOffsetNumber)]); } } return true; } } public class ButtonListener implements OnClickListener, OnTouchListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub int i; i = arg0.getId(); i = i + picDoVariable.modeOffsetNumber; if(i == 0){ ............ }else if(i == 1){ ............ } .............. } }
[/code]
从截图中可以看到,界面中同时只显示6个操作选项。具体操作中,根据代码中的GestureDetector,在使用中左右滑动时候,显示的操作选项会对应更新,点击功能选项之后,就会进入到对应的功能操作界面中去。
具体演示下载:http://download.csdn.net/detail/u011630458/9261617
相关文章推荐
- tomcat内存不足,一段时间后不响应了
- 基于opencv的相机之增加图库功能(五)
- KVM虚拟化基本管理
- 基于opencv的相机之图像保存异常/模糊背景/黑白背景(四)
- linux下通过命令行更新android sdk
- Linux NPTL 是什么
- Tomcat
- mysql+tomcat连接池配置
- 《大型网站技术架构》读书笔记1
- Codeforces Round #278 (Div. 1) B. Strip multiset维护DP
- 基于opencv的相机之物体跟踪/抖动检测/图库更新/模仿HDR/模仿ChromaFlash(三)
- Ted Mosby - 一个MVP框架的软件架构
- Linux上安装JDK环境变量配置
- 基于opencv的相机之camera切换/闪光灯/边缘模式/分辨率(二)
- shell中的条件表达式
- OpenLayers 3 之 加载天地图
- ubuntu14.04 install tomcat
- Linux多线程实践(8) --Posix条件变量解决生产者消费者问题
- linux设置外接显示器的分辨率
- Linux下高cpu解决方案