element in HTML5, which can be combined with JavaScript to dynamically draw graphics in the canvas. In this article, we will not talk about graphics drawing in Canvas, but how to process pictures."/> element in HTML5, which can be combined with JavaScript to dynamically draw graphics in the canvas. In this article, we will not talk about graphics drawing in Canvas, but how to process pictures.">
search
HomeWeb Front-endH5 TutorialHow Canvas handles images

How Canvas handles images

Dec 05, 2017 pm 01:46 PM
canvasdeal withmethod

Canvas, translated as "canvas" in Chinese, has a new element in HTML5, which can be combined with JavaScript to dynamically draw graphics in the canvas. In this article, we will not talk about graphics drawing in Canvas, but how to process pictures.

The process is probably very simple, mainly divided into the following three steps:

Yes, it is as simple as putting an elephant into the refrigerator, haha.

1. Main API

The main Canvas APIs used in the entire process are:

  1. Drawing images: drawImage( )

  2. Get image data: getImageData()

  3. Rewrite image data: putImageData()

  4. Export image: toDataURL()

1. drawImage()

As the name suggests, this method is used to draw the image on the Canvas canvas Among them, there are three specific usages:

① Position the image on the canvas: context.drawImage(img,x,y)
② Position the image on the canvas and specify the width and height of the image: context. drawImage(img,x,y,width,height)
③ Cut the image and position the cut part on the canvas: context.drawImage(img,sx,sy,swidth,sheight,x,y,width ,height)

The above parameter values ​​are described in the following table:


##ParameterDescriptionimgSpecifies the image, canvas, or video to use. sxOptional. The x-coordinate position at which to start shearing. syOptional. The y-coordinate position to start shearing. swidthOptional. The width of the cropped image. sheightOptional. The height of the clipped image. x Place the x coordinate position of the image on the canvas. y Place the y coordinate position of the image on the canvas. widthOptional. The width of the image to use. (Stretch or shrink the image)heightOptional. The height of the image to use. (Stretch or shrink the image)

2. getImageData()

This method is used to get image data from the Canvas canvas, The specific usage is as follows:

Get the pixel data within the specified rectangular range of the canvas: var ImageData = context.getImageData(x,y,width,height)

The above parameter values ​​are described in the following table:


ParametersDescriptionxThe x-coordinate of the upper left corner to start copying. yThe y coordinate of the upper left corner to start copying. widthThe width of the rectangular area to be copied. heightThe height of the rectangular area to be copied.
This method will return an ImageData object, which has three properties: width, height and data, and what we mainly use is this data array, because It holds data for each pixel in the image. After having these data, we can process them, and finally rewrite them into the Canvas canvas, thus realizing the processing and conversion of the pictures. For the specific usage of the data array, we can see it in the following examples.

3. putImageData()

This method is very simple, it is used to rewrite the image data into the Canvas canvas. The specific usage is as follows:

context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight)

The above parameter values ​​are described in the following table:


ParametersDescriptionimgDataSpecifies the ImageData object to be put back into the canvas. xImageData The x-coordinate of the upper left corner of the object, in pixels. yImageData The y-coordinate of the upper left corner of the object, in pixels. dirtyXOptional. Horizontal value (x), in pixels, where to place the image on the canvas. dirtyYOptional. Horizontal value (y), in pixels, where to place the image on the canvas. dirtyWidthOptional. The width used to draw the image on the canvas. dirtyHeightOptional. The height at which the image is drawn on the canvas.

4. toDataURL()

这个方法与以上三种方法不同,它是Canvas对象的方法,该方法返回的是一个包含data URI的字符串,该字符串可直接作为图片路径地址填入How Canvas handles images标签的src属性当中,具体用法如下:

var dataURL = canvas.toDataURL(type, encoderOptions);

以上参数值描述如下表:


参数 描述
type 可选。图片格式,默认为 image/png。
encoderOptions 可选。在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略。

二、图片处理实例

本实例将通过代码简单介绍如何把彩色图片处理成黑白图片。

<!--HTML-->
<canvas id="canvas" width="600" height="600"></canvas>
<input id="handle" type="button" value="处理图片" />
<input id="create" type="button" value="生成图片" />
<p id="result"></p>

//JavaScript
window.onload = function(){
    var canvas = document.getElementById("canvas"),   //获取Canvas画布对象
        context = canvas.getContext(&#39;2d&#39;);  //获取2D上下文对象,大多数Canvas API均为此对象方法
    var image = new Image();  //定义一个图片对象
    image.src = &#39;imgs/img.jpg&#39;;  
    image.onload = function(){  //此处必须注意!后面所有操作均需在图片加载成功后执行,否则图片将处理无效
        context.drawImage(image,0,0);  //将图片从Canvas画布的左上角(0,0)位置开始绘制,大小默认为图片实际大小
        var handle = document.getElementById("handle");
        var create = document.getElementById("create");
        handle.onclick = function(){  // 单击“处理图片”按钮,处理图片
            var imgData = context.getImageData(0,0,canvas.width,canvas.height);   //获取图片数据对象
            var data = imgData.data;  //获取图片数据数组,该数组中每个像素用4个元素来保存,分别表示红、绿、蓝和透明度值
            var average = 0;
            for (var i = 0; i < data.length; i+=4) {
                average = Math.floor((data[i]+data[i+1]+data[i+2])/3);  //将红、绿、蓝色值求平均值后得到灰度值
                data[i] = data[i+1] = data[i+2] = average;  将每个像素点的色值重写
            }
            imgData.data = data;
            context.putImageData(imgData,0,0);  //将处理后的图像数据重写至Canvas画布,此时画布中图像变为黑白色
        };
        create.onclick = function(){  // 单击“生成图片”按钮,导出图片
            var imgSrc = canvas.toDataURL();  //获取图片的DataURL
            var newImg = new Image();
            var result = document.getElementById("result");
            newImg.src = imgSrc;  //将图片路径赋值给src
            result.innerHTML = &#39;&#39;;
            result.appendChild(newImg);
        };
    };
};

可能上面代码写得不是很好,看起来也不是那么好理解,最好自己能够亲自写一写,这样对于自己理解会更加深刻一些。

以上内容就是Canvas处理图片的方法,希望对大家有帮助。

相关推荐:

HTML5里Canvas常用的绘图技巧

JavaScript+html5 canvas实现图片上画超链接的示例代码

html5 canvas制作一个跟着鼠标移动消失的一堆炫彩小球

The above is the detailed content of How Canvas handles images. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
H5 Code Examples: Practical Applications and TutorialsH5 Code Examples: Practical Applications and TutorialsApr 25, 2025 am 12:10 AM

H5 provides a variety of new features and functions, greatly enhancing the capabilities of front-end development. 1. Multimedia support: embed media through and elements, no plug-ins are required. 2. Canvas: Use elements to dynamically render 2D graphics and animations. 3. Local storage: implement persistent data storage through localStorage and sessionStorage to improve user experience.

The Connection Between H5 and HTML5: Similarities and DifferencesThe Connection Between H5 and HTML5: Similarities and DifferencesApr 24, 2025 am 12:01 AM

H5 and HTML5 are different concepts: HTML5 is a version of HTML, containing new elements and APIs; H5 is a mobile application development framework based on HTML5. HTML5 parses and renders code through the browser, while H5 applications need to run containers and interact with native code through JavaScript.

The Building Blocks of H5 Code: Key Elements and Their PurposeThe Building Blocks of H5 Code: Key Elements and Their PurposeApr 23, 2025 am 12:09 AM

Key elements of HTML5 include,,,,,, etc., which are used to build modern web pages. 1. Define the head content, 2. Used to navigate the link, 3. Represent the content of independent articles, 4. Organize the page content, 5. Display the sidebar content, 6. Define the footer, these elements enhance the structure and functionality of the web page.

HTML5 and H5: Understanding the Common UsageHTML5 and H5: Understanding the Common UsageApr 22, 2025 am 12:01 AM

There is no difference between HTML5 and H5, which is the abbreviation of HTML5. 1.HTML5 is the fifth version of HTML, which enhances the multimedia and interactive functions of web pages. 2.H5 is often used to refer to HTML5-based mobile web pages or applications, and is suitable for various mobile devices.

HTML5: The Building Blocks of the Modern Web (H5)HTML5: The Building Blocks of the Modern Web (H5)Apr 21, 2025 am 12:05 AM

HTML5 is the latest version of the Hypertext Markup Language, standardized by W3C. HTML5 introduces new semantic tags, multimedia support and form enhancements, improving web structure, user experience and SEO effects. HTML5 introduces new semantic tags, such as, ,, etc., to make the web page structure clearer and the SEO effect better. HTML5 supports multimedia elements and no third-party plug-ins are required, improving user experience and loading speed. HTML5 enhances form functions and introduces new input types such as, etc., which improves user experience and form verification efficiency.

H5 Code: Writing Clean and Efficient HTML5H5 Code: Writing Clean and Efficient HTML5Apr 20, 2025 am 12:06 AM

How to write clean and efficient HTML5 code? The answer is to avoid common mistakes by semanticizing tags, structured code, performance optimization and avoiding common mistakes. 1. Use semantic tags such as, etc. to improve code readability and SEO effect. 2. Keep the code structured and readable, using appropriate indentation and comments. 3. Optimize performance by reducing unnecessary tags, using CDN and compressing code. 4. Avoid common mistakes, such as the tag not closed, and ensure the validity of the code.

H5: How It Enhances User Experience on the WebH5: How It Enhances User Experience on the WebApr 19, 2025 am 12:08 AM

H5 improves web user experience with multimedia support, offline storage and performance optimization. 1) Multimedia support: H5 and elements simplify development and improve user experience. 2) Offline storage: WebStorage and IndexedDB allow offline use to improve the experience. 3) Performance optimization: WebWorkers and elements optimize performance to reduce bandwidth consumption.

Deconstructing H5 Code: Tags, Elements, and AttributesDeconstructing H5 Code: Tags, Elements, and AttributesApr 18, 2025 am 12:06 AM

HTML5 code consists of tags, elements and attributes: 1. The tag defines the content type and is surrounded by angle brackets, such as. 2. Elements are composed of start tags, contents and end tags, such as contents. 3. Attributes define key-value pairs in the start tag, enhance functions, such as. These are the basic units for building web structure.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor