, , . . , , .
- , 255 (1.0), , , . , - 255.
Canvas ImageData Image DOM Element, , - 255 .
, :
function make_image_with_data(contents) {
var fside = Math.sqrt(contents.length / 3);
var side = Math.ceil(fside);
var cv = document.createElement('canvas');
cv.width = side;
cv.height = side;
var ctx = cv.getContext('2d');
var id = ctx.createImageData(side, side);
var data = id.data;
data[0] = (contents.length >> 24) & 0xff;
data[1] = (contents.length >> 16) & 0xff;
data[2] = (contents.length >> 8) & 0xff;
data[3] = 255;
data[4] = (contents.length) & 0xff;
var z = 5;
var x = 0;
for (; x < contents.length; ++x) {
data[z] = contents.charCodeAt(x);
++z;
if (z % 4 == 3) {
data[z] = 255;
++z;
}
}
ctx.putImageData(id, 0, 0);
var img = document.createElement('img');
img.width = side;
img.height = side;
img.src = cv.toDataURL();
$(document.body).append(img);
return img;
}
:
function load_data_from_image(img) {
var cv = document.createElement('canvas');
cv.width = img.width;
cv.height = img.height;
var ctx = cv.getContext('2d');
ctx.drawImage(img, 0, 0, img.width, img.height);
var id = ctx.getImageData(0, 0, img.width, img.height);
var data = id.data;
var len = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[4];
var out = new Uint8Array(new ArrayBuffer(len));
var z = 5;
for (var x = 0; x < len; ++x) {
out[x] = data[z];
++z;
if (z % 4 == 3) {
++z;
}
}
return out;
}