2015-05-11 3 views
0

Я могу преобразовать изображение в оттенки серого, как я желаю, но мне было интересно, как вернуться к оригинальному изображению после преобразования в оттенки серого?Как преобразовать изображение в оттенках серого в оригинальное изображение RGB?

Вот мой Javascript фильтр изображений в оттенках серого

Filters = {}; 
var img = document.getElementById("background"); 
var c = document.getElementById('canvas'); 
var ctx = c.getContext("2d"); 

Filters.getPixels = function() { 
    return ctx.getImageData(0, 0, c.width, c.height); 
}; 

Filters.filterImage = function(filter, var_args) { 
    var args = [this.getPixels()]; 
    args.push(var_args); 
    return filter.apply(null, args); 
}; 

function runFilter(filter, arg1, arg2, arg3) { 
    var idata = Filters.filterImage(filter, arg1, arg2, arg3); 
    c.width = idata.width; 
    c.height = idata.height; 
    var ctx = c.getContext('2d'); 
    ctx.putImageData(idata, 0, 0); 
} 

Filters.grayscale = function(pixels, args) { 
    var d = pixels.data; 
    for (var i = 0; i < d.length; i += 4) { 
     var r = d[i]; 
     var g = d[i + 1]; 
     var b = d[i + 2]; 
     var v = 0.2126 * r + 0.7152 * g + 0.0722 * b; 
     d[i] = d[i + 1] = d[i + 2] = v; 
     } 
    return pixels; 
}; 
+1

Ум, что? Изменение цветного изображения в оттенки серого потеряет информацию, и вы не можете получить обратно. Существует множество комбинаций красного, зеленого и синего, которые могут привести к серому значению «50%», включая, конечно, случай, когда предполагаемый цвет RGB * был «50% серым». – usr2564301

ответ

3

Отправляясь в оттенках серого включает выбрасывание цветовые данные. Единственный способ вернуть это обратно - это сохранить его копию в другом месте.

+0

Ха, я вижу. В заключение я не могу вернуться к оригинальному изображению, не сохранив оригинальное изображение, верно !? –

+0

Да. Правильно. –