Une introduction à l'utilisation de Canvas pour traiter des images
Cet article présente principalement comment utiliser Canvas pour traiter des images. Le contenu est plutôt bon. Maintenant, je le partage avec vous et le donne comme référence.
Canvas, traduit par « canvas » en chinois, possède un nouvel élément
Aujourd'hui, nous ne parlerons pas de dessin graphique dans Canvas, mais de comment traiter des images.
Le processus est probablement très simple, principalement divisé en trois étapes suivantes :
Oui, c'est aussi simple que de mettre un éléphant au réfrigérateur, haha .
1. API principales
Les principales API Canvas utilisées dans l'ensemble du processus sont :
Dessiner des images : drawImage( )
Obtenir les données d'image : getImageData()
Réécrire les données d'image : putImageData()
Exporter l'image : toDataURL()
1. drawImage()
Comme son nom l'indique, cette méthode est utilisée pour dessiner l'image sur le canevas Canvas Parmi eux, il existe trois utilisations spécifiques :
① Positionner l'image sur le canevas : context.drawImage(img,x,y)
② Positionner l'image sur le canevas et préciser la largeur et hauteur de l'image : context. drawImage(img,x,y,width,height)
③ Coupez l'image et positionnez la partie coupée sur le canevas : context.drawImage(img,sx,sy,swidth,sheight, x,y,width,height)
Les valeurs des paramètres ci-dessus sont décrites dans le tableau suivant :
参数 | 描述 |
---|---|
img | 规定要使用的图像、画布或视频。 |
sx | 可选。开始剪切的 x 坐标位置。 |
sy | 可选。开始剪切的 y 坐标位置。 |
swidth | 可选。被剪切图像的宽度。 |
sheight | 可选。被剪切图像的高度。 |
x | 在画布上放置图像的 x 坐标位置。 |
y | 在画布上放置图像的 y 坐标位置。 |
width | 可选。要使用的图像的宽度。(伸展或缩小图像) |
height | 可选。要使用的图像的高度。(伸展或缩小图像) |
2.getImageData()
Cette méthode est utilisée pour récupérer des données du canevas. Obtenez des données d'image, l'utilisation spécifique est la suivante :
Obtenez les données de pixels dans la plage rectangulaire spécifiée du canevas : var ImageData = context.getImageData( x,y,width,height)
Les valeurs des paramètres ci-dessus sont décrites dans le tableau suivant :
参数 | 描述 |
---|---|
x | 开始复制的左上角位置的 x 坐标。 |
y | 开始复制的左上角位置的 y 坐标。 |
width | 将要复制的矩形区域的宽度。 |
height | 将要复制的矩形区域的高度。 |
Cette méthode renverra un objet ImageData. Cet objet a trois attributs : width, height. et les données. La chose la plus importante que nous utilisons est ce tableau de données, car il enregistre chaque élément de l'image. Après avoir obtenu ces données, nous pouvons les traiter, et enfin les réécrire dans le canevas Canvas, réalisant ainsi le traitement et la conversion des images. Pour l'utilisation spécifique du tableau de données, nous pouvons le voir dans les exemples suivants.
3. putImageData()
Cette méthode est très simple, elle est utilisée pour réécrire les données de l'image dans le canevas Canvas. 🎜>
context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight)
4. toDataURL()
这个方法与以上三种方法不同,它是Canvas对象的方法,该方法返回的是一个包含data URI的字符串,该字符串可直接作为图片路径地址填入标签的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('2d'); //获取2D上下文对象,大多数Canvas API均为此对象方法 var image = new Image(); //定义一个图片对象 image.src = 'imgs/img.jpg'; 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 = ''; result.appendChild(newImg); }; }; };
可能上面代码写得不是很好,看起来也不是那么好理解,最好自己能够亲自写一写,这样对于自己理解会更加深刻一些。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
HTML5 Plus 实现手机APP拍照或相册选择图片上传的功能
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'article discute de l'utilisation de balises Meta pour contrôler la mise à l'échelle des pages sur les appareils mobiles, en se concentrant sur des paramètres tels que la largeur et l'échelle initiale pour une réactivité et des performances optimales. COMMANDE: 159

L'article traite de la gestion de la confidentialité de l'emplacement des utilisateurs et des autorisations à l'aide de l'API Geolocation, mettant l'accent sur les meilleures pratiques pour demander des autorisations, assurer la sécurité des données et se conformer aux lois sur la confidentialité.

L'article discute de l'utilisation de l'API de visibilité de la page HTML5 pour détecter la visibilité de la page, améliorer l'expérience utilisateur et optimiser l'utilisation des ressources. Les aspects clés comprennent la pause des supports, la réduction de la charge du processeur et la gestion de l'analyse en fonction des changements de visibilité.

L'exécution du projet H5 nécessite les étapes suivantes: Installation des outils nécessaires tels que le serveur Web, Node.js, les outils de développement, etc. Créez un environnement de développement, créez des dossiers de projet, initialisez les projets et écrivez du code. Démarrez le serveur de développement et exécutez la commande à l'aide de la ligne de commande. Aperçu du projet dans votre navigateur et entrez l'URL du serveur de développement. Publier des projets, optimiser le code, déployer des projets et configurer la configuration du serveur Web.

L'article explique comment utiliser l'API HTML5 Drag and Drop pour créer des interfaces utilisateur interactives, détaillant les étapes pour rendre les éléments dragables, gérer les événements clés et améliorer l'expérience utilisateur avec des commentaires personnalisés. Il discute également des pièges communs à un

Cet article explique l'API HTML5 WebSockets pour la communication client-serveur bidirectionnelle en temps réel. Il détaille les implémentations côté client (JavaScript) et côté serveur (Python / Flask), résolvant des défis tels que l'évolutivité, la gestion de l'état, un

La page H5 doit être maintenue en continu, en raison de facteurs tels que les vulnérabilités du code, la compatibilité des navigateurs, l'optimisation des performances, les mises à jour de sécurité et les améliorations de l'expérience utilisateur. Des méthodes de maintenance efficaces comprennent l'établissement d'un système de test complet, à l'aide d'outils de contrôle de version, de surveiller régulièrement les performances de la page, de collecter les commentaires des utilisateurs et de formuler des plans de maintenance.

H5 (HTML5) convient aux applications légères, telles que les pages de campagne de marketing, les pages d'affichage des produits et les micro-Websites de promotion d'entreprise. Ses avantages résident dans la plateformité multi-plateaux et une riche interactivité, mais ses limites résident dans des interactions et des animations complexes, un accès aux ressources locales et des capacités hors ligne.
