스크레이퍼 효과
javascript 부분:
function imageClip(filter){var canvas = document.querySelector('canvas'),
context = canvas.getContext('2d'),
img = new Image(), //
finish; //
img.src = 'http://www.jcore.cn/resources/images/2014/09/20/html5-series-clip-pic-0.png'; //
img.onload = function(e) //
{
var imgw = img.width, //
imgh = img.height, //
offsetX = canvas.offsetLeft, //
offsetY = canvas.offsetTop, //
mousedown = false; //
// canvas 、 、
canvas.width = imgw;
canvas.height = imgh;
canvas.style.backgroundImage = 'url('+img.src+')';
// 、
context.fillStyle = 'gray';
context.globalAlpha = 0.6;
//
context.fillRect(0,0,imgw,imgh);
// canvas
context.globalCompositeOperation = 'destination-out';
//
function eventDown(e){
e.preventDefault(); //
mousedown = true; //
}
//
function eventUp(e){
e.preventDefault(); //
mousedown = false; //
clearMask(); //
}
//
function clearMask(){
var num = 0, //
datas = context.getImageData(0,0,imgw,imgh), //
datasLength = datas.data.length; //
for (var i = 0; i < datasLength; i++) {
if (datas.data[i] == 0) num++; // 0 , ++
}
if (num >= datasLength * filter) { //
if(finish) finish(); //
};
}
//
function eventMove(e){
e.preventDefault(); //
if(mousedown) {
if(e.changedTouches){ //
e = e.changedTouches[e.changedTouches.length-1];
}
var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0, // X
y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY || 0; // Y
//
context.beginPath();
context.arc(x, y, 30, 0, Math.PI * 2); //
context.fill();
}
}
//
canvas.addEventListener('touchstart', eventDown);
canvas.addEventListener('touchend', eventUp);
canvas.addEventListener('touchmove', eventMove);
//
canvas.addEventListener('mousedown', eventDown);
canvas.addEventListener('mouseup', eventUp);
canvas.addEventListener('mousemove', eventMove);
};
this.finish = function(callback){
finish = callback;
}
}
호출 방법:
var clip = new imageClip(0.1);
clip.finish(function(){
alert("clip success...");
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.