
See the Pen canvas hover pixelate by Oh Ikmyeong (@dpffpself) on CodePen.
JS
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
const canvas = document.getElementById("canvas")
const ctx = canvas.getContext("2d")
const img = new Image()
img.src = "https://images.unsplash.com/photo-1772528205616-e65dc0994c7b?q=80&w=880&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
let pixelSize = 1
let targetPixelSize = 1
img.onload = () => {
draw()
}
canvas.addEventListener("mouseenter", () => {
targetPixelSize = 100
})
canvas.addEventListener("mouseleave", () => {
targetPixelSize = 1
})
function draw() {
// 부드럽게 애니메이션
pixelSize += (targetPixelSize - pixelSize) * 0.1
const w = canvas.width
const h = canvas.height
const size = Math.max(1, Math.floor(pixelSize))
const scaledW = Math.ceil(w / size)
const scaledH = Math.ceil(h / size)
ctx.imageSmoothingEnabled = false
// 작은 크기로 그림
ctx.drawImage(img, 0, 0, scaledW, scaledH)
// 다시 크게 확대
ctx.drawImage(
canvas,
0, 0, scaledW, scaledH,
0, 0, w, h
)
requestAnimationFrame(draw)
}
|
cs |
'CSS&JS > ⚡Thinkers' 카테고리의 다른 글
| [JS] canvas로 첨부파일 이미지로부터 평균 배경색상 추출해서 4사분면 그라디언트 (0) | 2026.03.09 |
|---|---|
| [JS] 첨부한 이미지 파일의 평균 색상값 구하기 (0) | 2026.03.09 |
| [JS]첨부파일 이미지 canvas에서 픽셀 모자이크화 시키기 (0) | 2026.03.06 |
| [JS] position:absolute로 masonry layout 구현하기 (0) | 2026.01.09 |
| [CSS,JS] 삼각함수로 그래프와 그래프 윗중간점 사이를 잇는 선 구하기 (1) | 2025.12.11 |