美文网首页
canvas ps 仿制图章

canvas ps 仿制图章

作者: 灰斗儿 | 来源:发表于2018-06-24 21:33 被阅读28次
思路

图片绘制到画板
当键盘alt键和鼠标左键同时按下时,获取光标附近图像并记录
当松开alt键,按住鼠标左键拖动时,绘制记录的图像到路径上
通过用记录图片覆盖原图像来达到效果

具体代码片段

初始化canvas

<canvas id="canvas" width="800" height="800"></canvas>

获取到画板,并绘制图片到画板

canvas = document.getElementById("canvas");
//二维画板
ctx = canvas.getContext("2d");
//画笔笔触颜色
ctx.strokeStyle = "red";
//创建空白图片
var img=new Image()
//填充图片数据
img.src="images/14.png"; 
//图片加载完毕 
img.onload = function ()   
{  
    var w = img.width
    var h = img.height
    //参数分别是 图片数据,绘制的x,y,width,height
    ctx.drawImage(img,0,0, w, h);
}

监听键盘alt键按下松开

//判断是否键盘alt键被按下
document.onkeydown = function(event){
    if (event.key == "Alt") 
    {
        isAltDown = true;
    }
}
//判断是否键盘alt键被放开
document.onkeyup = function(event){
    if (event.key == "Alt") 
    {
        isAltDown = false;
    }
}

监听鼠标按下松开移动等操作

//鼠标移动
canvas.addEventListener("mousemove",eventMove,false);
//鼠标按下
canvas.addEventListener("mousedown",eventDown,false);
//鼠标松开
canvas.addEventListener("mouseup",eventUp,false);
//鼠标进入canvas区域
canvas.addEventListener("mouseenter",eventEnter,false);
//鼠标离开canvas区域
canvas.addEventListener("mouseleave",eventLeave,false);

获取光标附近图像


function eventDown(event){
    //判断鼠标左键
  if (event.button == 0) {
        //获取鼠标光标当前所在点
        var mouseX =event.pageX-this.offsetLeft;
        var mouseY =event.pageY-this.offsetTop;

        //alt键按下
        if (isAltDown) {
            //记录光标附近30像素的图像
          self.drawImagePixelData = ctx.getImageData(mouseX+15, mouseY+15, 30, 30);
          return;
        }
        //记录鼠标左键按下
        isMouseDown = true;
        //判断是否存在可以绘制图像
        if (self.drawImagePixelData) {
            //绘制记录图像到原图像上
          ctx.putImageData(self.drawImagePixelData, mouseX-15, mouseY-15);
        }
  }
}

绘制到原图像

function eventMove(event){

    //获取鼠标光标当前所在点
  var mouseX =event.pageX-this.offsetLeft;
  var mouseY =event.pageY-this.offsetTop;

  //判断鼠标是否按下
  if (isMouseDown) {
        //more point
        if (event.changedTouches) 
        {
            event = event.changedTouches[0];
        }
        //绘制图像
        if (self.drawImagePixelData) {
          ctx.putImageData(self.drawImagePixelData, mouseX-15, mouseY-15);
        }
  }
}

鼠标松开状态处理

function eventUp(event){
  event.preventDefault();
  if (isAltDown) {
      return;
  }
  isMouseDown = false;
  ctx.save();
}

也可以自定义一个光标。
定义一个div标签,根据鼠标的实时位置去更新它的坐标,当alt键按下时,也可以给它更换图像。

整理思路大概就是这样,如果感兴趣就自己试一下吧

相关文章

  • canvas ps 仿制图章

    思路 图片绘制到画板当键盘alt键和鼠标左键同时按下时,获取光标附近图像并记录当松开alt键,按住鼠标左键拖动时,...

  • Ps的仿制图章工具

    工具设置 这是一个原图 我做图 这个工具是一个专门修图工具,可以消除图片上的污点,杂物,也可复制图片的某个部分。 ...

  • 第25讲: Photoshop教程仿制图章工具的操作ps教程

    这节课程,来讲讲解另外一个photoshop软件中比较常用的工具, 它就是“仿制图章”工具。 仿制图章工具是pho...

  • PS初级教程 day 08 仿制图章工具,图案图章工具

    这节课程,来讲讲解另外一个photoshop软件中比较常用的工具,它就是“仿制图章”工具快捷键【S】。 仿制图章工...

  • 人像摄影教程-后期

    PS: 加深工具(阴影)把暗部加深,有层次 仿制图章,硬度低,或者画笔工具擦去杂物 不好抠图的,用减淡工具擦亮 然...

  • 面部修饰工具

    1、仿制图章工具:是Photoshop软件中的一个工具,主要用来复制取样的图像。仿制图章工具使用方便,它能够按涂抹...

  • 第6课:人像婚纱后期调整

    目录1.CAR分析照片1.1影调观察1.2明度统一1.3镜头校正1.4基本2.PS:形态调整3.钢笔.仿制图章4....

  • 当你遇见PS之给图片美容(一)

    1.仿制图章工具 仿制图章工具主要用于图片去水印,去斑,该工具程序不会自动计算。 使用方法:打开图片,用快捷键ct...

  • 每天进步一点点(九)

    今天上传了关于东北乱炖的小文,收到简书“月读时分”的私信约稿,可以试着写点什么发给他。 ps学了用仿制图章工具祛除...

  • Ps-画笔修复,仿制图章,红眼,矩形选区

    画笔修复与仿制图章的区别 二者用法差不多,区别在于画笔修复一般会将修复的部位与图像周围的色彩融合一些 而仿制图章在...

网友评论

      本文标题:canvas ps 仿制图章

      本文链接:https://www.haomeiwen.com/subject/oymsyftx.html