내용 요약: 이 기사에서는 간단한 코드 예제와 약간 형편없는 그림 데모를 통해 이미지 픽셀 데이터 작업에서 캔버스의 일반적인 인터페이스를 보여줍니다. 보다 복잡한 효과를 얻기 위해 이러한 인터페이스를 사용하는 방법에 대해서는 다음 장에서 계속 설명할 것입니다.
1. 캔버스 이미지 채우기, 3. 캔버스 이미지 데이터 생성, 4. imageData.data에 대한 몇 가지 추가 사항,
1. 이미지 채우기
/**
* @description
* @param {Number} x 이미지의 그리기 시작점과 캔버스의 가장 왼쪽 사이의 거리
* @param {Number} y 그리기 시작점 사이의 거리 이미지와 캔버스 상단
* @param {Number} width 캔버스에 그려진 최종 이미지의 너비
* @param {Number} height 캔버스에 그려진 최종 이미지의 높이
*/
context.drawImage(image, x, y, width, height)
demo_01은 다음과 같습니다.
function $(id) { return document.getElementById(id) }
function getImage(url, callback){
var img = document.createElement('img') ;
img.onload = function( ){
콜백 && 콜백(this)
img.src =
document.body.appendChild(img); >}
function drawImage(){
var url = 'xiangjishi.png';
var canvas = $('draw_image_canvas')
var context = canvas.getContext('2d');
getImage(url, function(img ){
canvas.width = img.width;
canvas.height = img.height;
var offsetX = 20;
var offsetY = 20;
var drawWidth = img.width/ 4;
var drawHeight = img.height/4;
context.drawImage(img, offsetX, offsetY, drawWidth, drawHeight)
}
drawImage();
데모 지침: xiangjishi.png를 로드한 후 캔버스 왼쪽 상단을 기준으로 한 좌표(0, 0)부터 시작합니다. , 캔버스에 xiangjishi.png를 그립니다.
이것을 보면 context.drawImage(image, x의 네 가지 매개 변수의 의미를 명확하게 이해하지 못할 수도 있습니다. , y, 너비, 높이) 몇 가지 매개변수를 수정하면 효과를 확인할 수 있습니다.
var offsetY = 20;
var drawWidth = img.width/2
var drawHeight/2 ;
context.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);
위의 API 설명과 결합하면 다음과 같습니다. 4개의 매개변수의 의미
2. 캔버스 이미지 데이터 가져오기/설정
* @description 캔버스 특정 영역의 픽셀 정보를 가져옵니다
* @param {Number} x 정보를 가져오는 시작점과 캔버스의 가장 왼쪽 부분 사이의 거리
* @param {Number} y 정보를 얻는 시작점 캔버스 위에서 시작 거리
* @param {Number} width 구한 너비
* @param {Number} height 최종 높이
*/
context .getImageData(x, y, width, height)
이 메소드는 주로 세 가지 속성을 갖는 ImageData 객체를 반환합니다.
imageData.width: 각 행에 몇 개의 요소가 있는지
imageData.height: 각 열에 몇 개의 요소가 있는지
imageData.data: 캔버스에서 얻은 각 픽셀의 RGBA 값을 저장하는 1차원 배열입니다. 이 배열은 각 픽셀에 대해 빨간색, 녹색, 파란색 및 알파의 네 가지 값을 보유합니다. 각 값은 0에서 255 사이입니다. 따라서 이 배열에서는 캔버스의 각 픽셀이 4개의 정수 값이 됩니다. 배열은 왼쪽에서 오른쪽으로, 위에서 아래로 채워집니다.