JS 모자이크 이미지 효과 구현 예시
전체 논리:oldImg 그림 의 픽 셀 정 보 를 가 져 오고 5*5 단위 로 5*5 단위 에서 무 작위 픽 셀 을 가 져 와 5*5 의 모든 픽 셀 점 에 값 을 부여 하여 순환 하여 모자이크 효 과 를 실현 합 니 다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>www.jb51.net JS </title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
body {
background-color: grey;
text-align: center;
}
#myCanvas {
background-color: rgba(250, 0, 0, 0.3);
}
</style>
</head>
<body>
<canvas id="myCanvas" width="500" height="400"></canvas>
</body>
<script type="text/javascript">
window.onload = function() {
var myCanvas = document.getElementById('myCanvas');
var painting = myCanvas.getContext('2d');
//
var imgNode = new Image();
imgNode.src = '1.jpg';
//
drawImg(imgNode);
function drawImg(imgNode) {
// :5
imgNode.onload = function() {
painting.drawImage(imgNode, 0, 0, 250, 400);
var size = 5;
//
var oldImg = painting.getImageData(0, 0, 250, 400)
//
var newImg = painting.createImageData(250, 400)
for(var i = 0; i < oldImg.width; i++) {
for(var j = 0; j < oldImg.height; j++) {
// 5*5
var color = getPxInfo(oldImg, Math.floor(i * size + Math.random() * size), Math.floor(j * size + Math.random() * size))
//
for(var a = 0; a < size; a++) {
for(var b = 0; b < size; b++) {
// (a,b)
setPxInfo(newImg, i * size + a, j * size + b, color);
}
}
}
}
painting.putImageData(newImg, 250, 0)
}
}
//
function getPxInfo(imgDate, x, y) {
var colorArr = [];
var width = imgDate.width;
colorArr[0] = imgDate.data[(width * y + x) * 4 + 0]
colorArr[1] = imgDate.data[(width * y + x) * 4 + 1]
colorArr[2] = imgDate.data[(width * y + x) * 4 + 2]
colorArr[3] = imgDate.data[(width * y + x) * 4 + 3]
return colorArr;
}
//
function setPxInfo(imgDate, x, y, colors) {
//(x,y) == width*y + x
var width = imgDate.width;
imgDate.data[(width * y + x) * 4 + 0] = colors[0];
imgDate.data[(width * y + x) * 4 + 1] = colors[1];
imgDate.data[(width * y + x) * 4 + 2] = colors[2];
imgDate.data[(width * y + x) * 4 + 3] = colors[3];
}
}
</script>
</html>
더 많은 자 바스 크 립 트 관련 내용 은 본 사이트 의 주제 도 볼 수 있다.본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.