画像の減色処理 サンプルコードとデモ JavaScript + canvas
2019-04-107 min read
目次
概要
画像の減色処理を行ってみた。
サンプルコードとデモの紹介。
環境は JavaScript + Canvas。
減色処理について
通常、Canvas上での画像のRGBそれぞれの値は0〜255までの256^3で表現していますが、 このデモでは、4^3(32, 96, 160, 224)まで減色しています。
この場合、画像は以下のように処理されます。
デモ
以下のURLからでも試すことができます。
https://s-yoshiki.github.io/Gasyori100knockJS/#/questions/ans6
ソース
cv.js
/**
* 減色処理
*/
export default class {
/**
* @param {Object} canvas
* @param {Object} image
*/
main(canvas, image) {
let ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0, image.width, image.height);
let src = ctx.getImageData(0, 0, image.width, image.height);
let dst = ctx.createImageData(image.width, image.height);
let thresholds = [32, 96, 160, 224];
for (let i = 0; i < src.data.length; i++) {
if (i % 4 === 3) {
dst.data[i] = src.data[i];
continue;
}
let neer = Number.MAX_SAFE_INTEGER;
let _j = 0;
for (let j in thresholds) {
let d = Math.abs(src.data[i] - thresholds[j]);
if (d < neer) {
neer = d;
_j = j;
}
}
dst.data[i] = thresholds[_j];
}
ctx.putImageData(dst, 0, 0);
}
}
main.js
import CV from '/path/to/cv.js';
const canvas = document.getElementById('canvas');
let image = new Image();
image.crossOrigin = 'Anonymous';
image.src = 'path/to/image.png';
image.onload = function() {
canvas.width = image.width;
canvas.height = image.height;
let cv = new CV();
cv.main(canvas, image);
};
参考に知ったソースはこちら。
https://github.com/s-yoshiki/Gasyori100knockJS/blob/master/src/components/questions/answers/Ans6.js
Recommends
New Posts
Hot posts!
Date
Tags
(110)
(54)
(54)
(47)
(45)
(36)
(30)
(29)
(24)
(24)
(22)
(21)
(21)
(20)
(19)
(17)
(16)
(16)
(15)
(14)
(12)
(12)
(12)
(12)
(12)
(12)
(11)
(10)
(10)
(10)
(10)
(10)
(9)
(9)
(8)
(8)
(8)
(8)
(7)
(7)
(6)
(6)
(6)
(6)
(6)
(5)
(5)
(5)
(5)
(4)
Author