HTML5 구성 요소 Canvas를 사용하여 이미지 회색조를 구현하는 예제 코드
HTML5가 나온지 꽤 됐는데, 설날에 와서 한번 구경해 봤습니다
발견했습니다. HTML5의 Canvas 구성 요소 기능은 매우 강력합니다. Flash가 죽었다고 예측하는 데 대해 많은 사람들을 비난하지는 않습니다. 내가 관심 있는 것은 Canvas가 간단한 사진 프레임을 쉽게 구현할 수 있다는 것입니다. 웹 페이지 및 이미지 회색조.
HTML5 Canvas가 어떻게 작동하는지 살펴보겠습니다!
1. 새로운 HTML 페이지를 생성하고 body 태그 사이에
<canvas id="myCanvas" >Gray Filter</canvas>
window.onload = function() { var canvas = document.getElementById("myCanvas"); // do something here!! }
var context = canvas.getContext("2d");
html 페이지에 이미지를 추가하는 html 코드는 다음과 같습니다. 🎜>
<img id="imageSource" src="hanjiaren.jpg" alt="Canvas Source" />
이미지 자바스크립트 가져오기 html img 개체의 개체 코드는 다음과 같습니다.
var image = document.getElementById("imageSource");
얻은 이미지를 Canvas 객체에 그리는 코드는 다음과 같습니다.
context.drawImage(image, 0, 0);
Canvas 객체에서 이미지 픽셀 데이터를 얻는 코드는 다음과 같습니다. :
var canvasData = context.getImageData(0, 0, canvas.width, canvas.height);
픽셀값을 읽어와 Grayscale 계산을 구현하는 코드는 다음과 같습니다.
其中计算灰度公式为 gray color = 0.299 × red color + 0.578 × green color + 0.114 * blue color 读取出来的像素值顺序为RGBA 分别代表red color, green color, blue color, alpha channel 处理完成的数据要重新载入到Canvas中。代码如下: 程序最终的效果如下:for ( var x = 0; x < canvasData.width; x++) {
for ( var y = 0; y < canvasData.height; y++) {
// Index of the pixel in the array
var idx = (x + y * canvasData.width) * 4;
var r = canvasData.data[idx + 0];
var g = canvasData.data[idx + 1];
var b = canvasData.data[idx + 2];
// calculate gray scale value
var gray = .299 * r + .587 * g + .114 * b;
// assign gray scale value
canvasData.data[idx + 0] = gray; // Red channel
canvasData.data[idx + 1] = gray; // Green channel
canvasData.data[idx + 2] = gray; // Blue channel
canvasData.data[idx + 3] = 255; // Alpha channel
// add black border
if(x < 8 || y < 8 || x > (canvasData.width - 8) || y > (canvasData.height - 8))
{
canvasData.data[idx + 0] = 0;
canvasData.data[idx + 1] = 0;
canvasData.data[idx + 2] = 0;
}
}
}
context.putImageData(canvasData, 0, 0);
完全源代码如下:
<script>
window.onload = function() {
var canvas = document.getElementById("myCanvas");
var image = document.getElementById("imageSource");
// re-size the canvas deminsion
canvas.width = image.width;
canvas.height = image.height;
// get 2D render object
var context = canvas.getContext("2d");
context.drawImage(image, 0, 0);
var canvasData = context.getImageData(0, 0, canvas.width, canvas.height);
alert(canvasData.width.toString());
alert(canvasData.height.toString());
// gray filter
for ( var x = 0; x < canvasData.width; x++) {
for ( var y = 0; y < canvasData.height; y++) {
// Index of the pixel in the array
var idx = (x + y * canvasData.width) * 4;
var r = canvasData.data[idx + 0];
var g = canvasData.data[idx + 1];
var b = canvasData.data[idx + 2];
// calculate gray scale value
var gray = .299 * r + .587 * g + .114 * b;
// assign gray scale value
canvasData.data[idx + 0] = gray; // Red channel
canvasData.data[idx + 1] = gray; // Green channel
canvasData.data[idx + 2] = gray; // Blue channel
canvasData.data[idx + 3] = 255; // Alpha channel
// add black border
if(x < 8 || y < 8 || x > (canvasData.width - 8) || y > (canvasData.height - 8))
{
canvasData.data[idx + 0] = 0;
canvasData.data[idx + 1] = 0;
canvasData.data[idx + 2] = 0;
}
}
}
context.putImageData(canvasData, 0, 0); // at coords 0,0
};
</script>
Hello World!
<img id="imageSource" src="hanjiaren.jpg" alt="Canvas Source" />
<canvas id="myCanvas" >Gray Filter</canvas>
代码中的文件可以替换任意你想要看到的图片文件,HTML5, 原来如此神奇。
程序在google浏览器中测试通过千万不要在本地尝试运行上面的代码,google
브라우저의 보안 검사는 도메인이 아닌 파일을 브라우저에서 읽고 쓰는 것을 자동으로 방지합니다. 해당 파일은 tomcat이나
또는 다른 웹에 게시하는 것이 가장 좋습니다. 컨테이너 서버 나중에 Google 브라우저에서 효과를 확인할 수 있습니다.
위 내용은 이미지 그레이스케일을 구현하기 위한 HTML5 구성 요소 Canvas의 예제 코드 내용입니다. 중국사이트(www.php.cn)!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.
