웹 프론트엔드 H5 튜토리얼 H5 Canvas API의 drawImage(이미지 크기 조정 또는 자르기) 사용 예

H5 Canvas API의 drawImage(이미지 크기 조정 또는 자르기) 사용 예

May 24, 2018 pm 04:29 PM
canvas html5

이 글에서는 주로 HTML5 Canvas API의 drawImage() 메소드 사용 예를 소개합니다. drawImage() 메소드는 주로 이미지 크기를 조정하거나 자르는 데 사용되며 해당 좌표 및 관련 매개변수의 사용법을 제공합니다.

drawImage()를 참고하면 이미지, 캔버스, 비디오를 소개하고 크기를 조정하거나 자를 수 있습니다.

3가지 형태의 표현이 있습니다:

구문 1

JavaScript 코드클립보드에 콘텐츠 복사

  1. context.drawImage(img,dx,dy); 콘텐츠를 클립보드에 복사

context.drawImage(img,dx,dy,dw, dw);

구문 3

    JavaScript 코드
  1. 클립보드에 콘텐츠 복사

context.drawImage(img,sx,sy,sw,sh, dx,dy,dw,dh)

좌표 스케치를 살펴보겠습니다.

  1. PS: 스타일 너비와 높이에 <canvas>를 정의하지 마세요. 그렇지 않으면 내부에 그려진 그림이 자동으로 확대되거나 축소됩니다.

    3개의 매개변수 버전은 표준 형식이며 이미지, 캔버스 또는 비디오를 로드하는 데 사용할 수 있습니다. 5개의 매개변수 버전은 이미지를 로드할 수 있을 뿐만 아니라 9개의 매개변수로 이미지를 지정된 너비와 높이로 확대/축소할 수도 있습니다. 크기 조정 외에도 버전을 자를 수도 있습니다. 각 매개변수의 의미는 아래 표를 참조하세요.

  2. 매개변수
    설명
    img
    sx 선택사항. 자르기를 시작할 X 좌표 위치입니다.
    sy 선택사항. 절단을 시작할 Y좌표 위치입니다.
    선택사항. 자른 이미지의 너비입니다.
    높이 선택사항. 잘린 이미지의 높이입니다.
    x 이미지의 x 좌표 위치를 캔버스에 배치합니다.
    y 이미지의 y 좌표 위치를 캔버스에 배치합니다.
    너비 선택사항. 사용할 이미지의 너비입니다. (이미지를 늘리거나 줄입니다)
    height 사용할 이미지의 높이입니다. (이미지를 늘리거나 줄입니다)

    다음으로 이미지를 불러와 보겠습니다.
    2016325103525710.png (360×360)

    JavaScript 코드


    클립보드에 콘텐츠 복사

    参数
    描述
    img
    sx 可选。开始剪切的 x 坐标位置。
    sy 可选。开始剪切的 y 坐标位置。
    swidth 可选。被剪切图像的宽度。
    sheight 可选。被剪切图像的高度。
    x 在画布上放置图像的 x 坐标位置。
    y 在画布上放置图像的 y 坐标位置。
    width 可选。要使用的图像的宽度。(伸展或缩小图像)
    height 要使用的图像的高度。(伸展或缩小图像)

    &lt;!DOCTYPE html&gt;   
    &lt;html lang=&quot;zh&quot;&gt;   
    &lt;head&gt;   
        &lt;meta charset=&quot;UTF-8&quot;&gt;   
        &lt;title&gt;drawImage()&lt;/title&gt;   
        &lt;style&gt;   
            body { background: url(&quot;./images/bg3.jpg&quot;) repeat; } 
            #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
        &lt;/style&gt;   
    &lt;/head&gt;   
    &lt;body&gt;   
    &lt;p id=&quot;canvas-warp&quot;&gt;   
        &lt;canvas id=&quot;canvas&quot;&gt;   
            你的浏览器居然不支持Canvas?!赶快换一个吧!!   
        &lt;/canvas&gt;   
    &lt;/p&gt;   
      
    &lt;script&gt;   
        window.onload = function(){   
            var canvas = document.getElementById(&quot;canvas&quot;);   
            canvas.width = 800;   
            canvas.height = 600;   
            var context = canvas.getContext(&quot;2d&quot;);   
            context.fillStyle = &quot;#FFF&quot;;   
            context.fillRect(0,0,800,600);   
      
            var img = new Image();   
            img.src = &quot;./images/20-1.jpg&quot;;   
            img.onload = function(){   
                context.drawImage(img,200,50);   
            }   
        };   
    &lt;/script&gt;   
    &lt;/body&gt;   
    &lt;/html&gt;
    로그인 후 복사

    실행 결과:

    사진 액자 만들기:
      여기에서는 위의 경우에 clips(), drawImage() 및 3차 베지어 곡선 bezierCurveTo()를 결합하여 하트 모양의 액자를 추가합니다~
    JavaScript 코드


    클립보드에 콘텐츠 복사2016325103645161.jpg (850×500)


    &lt;!DOCTYPE html&gt;   
    &lt;html lang=&quot;zh&quot;&gt;   
    &lt;head&gt;   
        &lt;meta charset=&quot;UTF-8&quot;&gt;   
        &lt;title&gt;绘制心形相框&lt;/title&gt;   
        &lt;style&gt;   
            body { background: url(&quot;./images/bg3.jpg&quot;) repeat; } 
            #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
        &lt;/style&gt;   
    &lt;/head&gt;   
    &lt;body&gt;   
    &lt;p id=&quot;canvas-warp&quot;&gt;   
        &lt;canvas id=&quot;canvas&quot;&gt;   
            你的浏览器居然不支持Canvas?!赶快换一个吧!!   
        &lt;/canvas&gt;   
    &lt;/p&gt;   
      
    &lt;script&gt;   
        window.onload = function(){   
            var canvas = document.getElementById(&quot;canvas&quot;);   
            canvas.width = 800;   
            canvas.height = 600;   
            var context = canvas.getContext(&quot;2d&quot;);   
            context.fillStyle = &quot;#FFF&quot;;   
            context.fillRect(0,0,800,600);   
      
            context.beginPath();   
            context.moveTo(400,260);   
            context.bezierCurveTo(450,220,450,300,400,315);   
            context.bezierCurveTo(350,300,350,220,400,260);   
            context.clip();   
            context.closePath();   
      
            var img = new Image();   
            img.src = &quot;./images/20-1.jpg&quot;;   
            img.onload = function(){   
                context.drawImage(img,348,240,100,100);   
            }   
        };   
    &lt;/script&gt;   
    &lt;/body&gt;   
    &lt;/html&gt;
    로그인 후 복사

    실행 결과:

    아름답지 않나요? 자, 이제 가장 중요한 마스킹과 이미지 자르기에 대한 이야기를 마쳤습니다. 사실 drawImage()도 java.awt의 중요한 메소드입니다. 어떤 사람들은 자바 게임 인터페이스를 만들 때 drawImage() 사용법만 알면 한 번의 동작으로 세계를 정복할 수 있다고 합니다~ Canvas에서도 마찬가지입니다. 아티스트가 제공하는 자료는 기본적으로 그림입니다. 이때 drawImage()는 그림을 처리하는 데 매우 중요합니다. 기본적인 기술조차도 사진을 처리하는 가장 중요한 방법입니다.

    위 내용은 H5 Canvas API의 drawImage(이미지 크기 조정 또는 자르기) 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    뜨거운 기사 태그

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

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

    HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

    HTML의 중첩 테이블

    HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

    HTML의 테이블 테두리

    HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

    HTML 여백-왼쪽

    HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

    HTML 테이블 레이아웃

    HTML에서 텍스트 이동 HTML에서 텍스트 이동 Sep 04, 2024 pm 04:45 PM

    HTML에서 텍스트 이동

    HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

    HTML 정렬 목록

    HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

    HTML 온클릭 버튼

    HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

    HTML 입력 자리 표시자

    See all articles