2016-07-25 3 views
1

Я нарисовал изображение на холсте.Как обрезать выделенный прямоугольник, используя на основе щелчков мыши

Я хочу, чтобы пользователь нажимал на холст, чтобы обрезать часть изображения.

Как это сделать?

+1

очень неясно, в чем ваша проблема. Попытайтесь описать свою проблему более подробно. Особенно первое предложение очень сложно понять. – smoes

+0

Вы хотите обрезать изображение? У вас есть изображение на холсте, а затем вы хотите, чтобы пользователь определял прямоугольную область в холсте, канва обрезана, а затем изображение может быть загружено? Следующая ссылка показывает, как сделать обрезку изображения с помощью холста: http://tympanus.net/codrops/2014/10/30/resizing-cropping-images-canvas/ –

ответ

0

Вот план, чтобы вы начали:

  • рисовать изображение на холсте

    var canvas=document.getElementById('myCanvas'); 
    canvas.drawImage(yourImageObject,0,0); 
    
  • Listen для mousedown событий.

    canvas.onmousedown=function(e){handleMouseDown(e);}; 
    
  • У пользователя нажмите в левом верхнем углу [x0,y0] и правого нижнего углов [x1,y1], где они хотят, чтобы обрезать и записать эти 2 позиции мыши.

  • прямоугольника кадрирования определяется следующим образом:

    var x=x0; 
    var y=y0; 
    var width=x1-x0; 
    var height=y1-y0; 
    
  • Создание второго холста элемента и размер его размер кадрирования:

    var secondCanvas = document.createElement('canvas'); 
    secondCanvas.width = width; 
    secondCanvas.height = height; 
    document.body.appendChile(secondCanvas); 
    
  • Используйте версию отсечение drawImage рисовать прямоугольник обрезки с первого холста на второй холст

    secondCanvas.drawImage(canvas, 
        x,y,width,height, // clip just the cropping rectangle from the first canvas 
        0,0,width,height // draw just the cropped part onto the first canvas 
    ); 
    

Пользовательская часть изображения пользователя теперь находится на втором холсте.

Если вы хотите, чтобы преобразовать второй холст в объект изображения, вы можете сделать это:

var img=new Image(); 
img.onload=start; 
img.src=secondCanvas.toDataURL(); 
function start(){ 
    // at this point, img contains the cropped portion of the original image 
} 
Смежные вопросы