基于opencv的相机之图片处理首页效果(六)

来源:互联网 发布:网络兼职被骗报警程序 编辑:程序博客网 时间:2024/05/21 11:37

简介

  通过之前,已经有了预览拍照,以及对应图片显示的基本图库。接下来实现对图库中选中的图片,进行进一步的图像处理。本篇是实现图像处理的总体界面实现。

具体实现

效果演示

  对应的效果截图如下:           

代码讲解

  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){                           ............                        }                        ..............                 }}        


    从截图中可以看到,界面中同时只显示6个操作选项。具体操作中,根据代码中的GestureDetector,在使用中左右滑动时候,显示的操作选项会对应更新,点击功能选项之后,就会进入到对应的功能操作界面中去。
具体演示下载:http://download.csdn.net/detail/u011630458/9261617

0 0
原创粉丝点击