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

简介

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

具体实现

效果演示

  对应的效果截图如下:
           

代码讲解

  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值