如何将图像转换为像素,编辑它,并在Javascript中绘制编辑的图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将图像转换为像素,编辑它,并在Javascript中绘制编辑的图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3001字,纯文字阅读大概需要5分钟。
内容图文
我是JS的新手,我想学习如何做到以下几点:
获取图像数据(将其转换为像素数组,以便我可以编辑它),然后从像素编辑功能返回已编辑的数组,以便我可以使用这些编辑的值来绘制已编辑的图像.
我甚至不确定这是否可以解决这个问题,但这是我到目前为止所得到的:
var img = new Image();
img.src = 'img.png';
var canvas = document.getElementById('canvas');
var canvasEdited = document.getElementById('canvasEdited');
var ctx = canvas.getContext('2d');
var arr = [];
img.onload = function() {
ctx.drawImage(img, 0, 0);
function editPixels(ctx) {
for (i of ctx) {
// edit pixels values
arr.push(i - 10);
}
}
console.log(arr);
function drawEditedImage() {
var ctxEdited = canvasEdited.getContext('2d');
ctxEdited.drawImage(img, 0, 0);
}
};
控制台输出显示长度为0的数组.
为什么不将编辑的像素推送到arr?
解决方法:
有许多问题需要解决.如果要从画布获取getImageData,则图像需要位于同一个域中.更容易修复的是base64格式.不是网址.因此,将您的图像转换为base64字符串.
您不是在任何地方调用编辑像素,即使您在某个地方调用它并且在问题中没有提到,也要形成您的参数,明确表示您正在传递上下文而不是图像数据.
使用getImageData和putImageData在canvas中获取和设置数据.
对于循环需要更改,以便您不要在alpha数据上设置负值.图像数据的格式为rgba.
因为你没有提到如何操纵像素.我只是将rgb值减少100来显示原始图像和新图像之间的差异.
var img = new Image();
img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsBAMAAACLU5NGAAAAG1BMVEXMzMyWlpa3t7eqqqqcnJyjo6PFxcWxsbG+vr6NAD6nAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACjklEQVR4nO3XO2/bMBDA8fNTGn2OlGS00S8QAWnnaKi7xnBQdJSBFl3joY/RRpHv3SNFykYtdKOm/w8BHOkOIM3HkRYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/uddvWvsI38sj+7xT/2lJ2n8WH64iMbkdCaqurTPteqda98eX6+zKnu9OkdDckIH3W21kbmWlR5F9rrT+6ukTMv3ettFY3JC9UZyfZBJ0czrZxuWjXwtr5KmRSOnmy4ak9PJ3bc+PMveJvJ0a+OwslfNv1knG6Ks7KIhOaGxulYXsl7YmNy1j/XV4nLRXLtoSE4oczN2epLK5mRSuj/x/7tuPImfOfHDKXnRRUNyaq6l17bhu7aX/q1N1fY8Va7TIRqSE/tuS2a78i3Nludu7QsbsW4+54dlFw3JadVqM1Uf3b6XqSsO+4V/n+nrtGt7qrZdYzQkp6WuFLUtNW3DYebqzXoZk0ZqWzZGQ3LqblmLvhFtRq5Ho9Ct9c25OI1c52M0JKftlrzpc+9ozfSilOfbctjRsv226FtbtuBvLpJmOuza8hW7Zyfa4lpeJFl5H24nZr/Fz4srReNQt9ahW5nGpn8d/azFaEhOyJ8hNi+HtnBn5yrvClcsW+44slmL0UPyKj8Jh0/fmVjd12HxV+3hM+CZ6DZUFW4Q9+GOcPShuT6sw5o/3PovEKMhOaG5frZBWPXdt2a2xkMV2JeNuNI62H1LqmJXF9J3O7XbQ65t4xP9+OguFMPdTr9Zkd9I313eLaxt28X5VtUuqAPe5eVH/ckalPyl/THzFn/5jF0H9qEMZC/Fz4toTAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEjpL514clJrNSt2AAAAAElFTkSuQmCC';
var canvas = document.getElementById('canvas');
var canvasEdited = document.getElementById('canvasEdited');
var ctx = canvas.getContext('2d');
var arr = [];
img.onload = function() {
ctx.drawImage(img, 0, 0);
var imageData = ctx.getImageData(0,0, canvas.width, canvas.height)
editPixels(imageData.data);
drawEditedImage( imageData);
};
function editPixels(imgData) {
for (var i=0; i < imgData.length; i += 4) {
imgData[i] = imgData[i] - 100;
imgData[i+1] = imgData[i+1] - 100;
imgData[i+2] = imgData[i+2] - 100;
}
}
function drawEditedImage(newData) {
var ctxEdited = canvasEdited.getContext('2d');
ctxEdited.putImageData(newData, 0, 0);
}
同样的jsfiddle
https://jsfiddle.net/karthick6891/3yhyyLyf/
内容总结
以上是互联网集市为您收集整理的如何将图像转换为像素,编辑它,并在Javascript中绘制编辑的图像全部内容,希望文章能够帮你解决如何将图像转换为像素,编辑它,并在Javascript中绘制编辑的图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。