forked from mnsilva2/js13k-2018
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconvert.js
103 lines (97 loc) · 2.52 KB
/
convert.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
var canvas = document.getElementById('imageCanvas');
var ctx = canvas.getContext('2d');
var multiple = document.getElementById('Multiple')
var white = document.getElementById('White')
var output = document.getElementById('output')
function handleImage(e){
console.log(e)
var reader = new FileReader();
reader.onload = function(event){
var img = new Image();
img.onload = function(){
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img,0,0);
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
function convertImagetoEngine(){
multipleVal = multiple.checked
whiteVal = white.checked
size = multipleVal == true ? 20 : 10
var img = document.getElementById('my-image');
var finalString = ''
for(let i = 0; i < size; i++){
for(let j = 0; j < size; j++){
var pixelData = ctx.getImageData(i, j, 1, 1).data;
console.log(whiteVal)
let index;
if(whiteVal && rgbToHex(pixelData[0],pixelData[1],pixelData[2]) == 'ffffff'){
index = 0;
}else{
index =colorpalleteArray.indexOf(rgbToHex(pixelData[0],pixelData[1],pixelData[2]))
}
let bin = '01'+((multipleVal == true ? 1 : 0) + pad(index.toString(2), 5))
console.log(bin);
console.log(parseInt(bin,2))
finalString += String.fromCharCode(parseInt(bin,2))
}
} output.value = finalString
}
function componentToHex(c) {
var hex = c.toString(16);
return hex.length == 1 ? "0" + hex : hex;
}
function rgbToHex(r, g, b) {
return "" +componentToHex(r) + componentToHex(g) + componentToHex(b);
}
function hexToRgb(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
function pad(n, width, z) {
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
colorpalleteArray = [
'transparent',
'be4a2f',
'd77643',
'ead4aa',
'e4a672',
'733e39',
'3e2731',
'a22633',
'e43b44',
'f77622',
'feae34',
'fee761',
'63c74d',
'3e8948',
'265c42',
'193c3e',
'124e89',
'0099db',
'2ce8f5',
'ffffff',
'c0cbdc',
'8b9bb4',
'5a6988',
'3a4466',
'262b44',
'181425',
'ff0044',
'68386c',
'b55088',
'f6757a',
'e8b796',
'c28569']