[英]draw image (in canvas) in black and white on-upload the image
I have two code : 我有两个代码:
I want to draw the image when it is uploaded in black and white, thanks :) 我要绘制黑白上传的图像,谢谢:)
1st code 第一个代码
var dz_cart_f_photo = document.getElementById('dz_cart_f_photo');
dz_cart_f_photo.addEventListener('change', handleImage, false);
var canvas = document.getElementById('dz_fcart_f_canvas');
var ctx = canvas.getContext('2d');
function handleImage(e) {
var reader = new FileReader();
reader.onload = function(event) {
var img = new Image();
img.onload = function(){ ctx.drawImage(img, 0, 0); }
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
2nd code 第二码
function drawImage(imageObj) {
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var x = 69;
var y = 50;
context.drawImage(imageObj, x, y);
var imageData = context.getImageData(x, y, imageObj.width, imageObj.height);
var data = imageData.data;
for(var i = 0; i < data.length; i += 4) {
var brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];
// red
data[i] = brightness;
// green
data[i + 1] = brightness;
// blue
data[i + 2] = brightness;
}
// overwrite original image
context.putImageData(imageData, x, y);
}
var imageObj = new Image();
imageObj.onload = function() {
drawImage(this);
};
imageObj.src = '88bee903c59cb3eb1d42453f1eaa2ca2.png';
This is how I would do it: 这就是我要做的:
I don't know how do you want to set the width and the height of your canvas. 我不知道如何设置画布的宽度和高度。 In my code I have:
在我的代码中,我有:
canvas.width = img.width;
canvas.height = img.height;
which makes the canvas the same size as the image uploaded. 使画布的大小与上载的图像相同。 Alternatively you may do:
或者,您可以执行以下操作:
canvas.width = img.width + x;
canvas.height = img.height + y;
Where x
and y
represent the offset you defined at the beginning. 其中
x
和y
代表您在开始时定义的偏移量。
//the canvas var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); var x = 69; var y = 50; // the input type="file" event listener dz_cart_f_photo.addEventListener('change', handleImage, false); function handleImage() { var file = dz_cart_f_photo.files[0]; var reader = new FileReader(); reader.addEventListener( "load", function() { var img = new Image(); img.src = reader.result; img.onload = function() { // set the canvas.width and canvas.height canvas.width = img.width; canvas.height = img.height; drawImage(img); }; }, false ); if (file) { reader.readAsDataURL(file); } } function drawImage(imageObj) { context.drawImage(imageObj, x, y); var imageData = context.getImageData(x, y, imageObj.width, imageObj.height); var data = imageData.data; for (var i = 0; i < data.length; i += 4) { var brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]; // red data[i] = brightness; // green data[i + 1] = brightness; // blue data[i + 2] = brightness; } // overwrite original image context.putImageData(imageData, x, y); }
<p><input type="file" id="dz_cart_f_photo"></p> <canvas id="myCanvas"></canvas>
I hope it helps 希望对您有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.