Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   неудобства с ImageData (https://javascript.ru/forum/misc/21451-neudobstva-s-imagedata.html)

util 09.09.2011 18:07

неудобства с ImageData
 
Вот так я делаю попиксельную корректировку изображений: помимо основного холста создаётся ещё один, невидимый (buffer). На нём рисуется изображение, затем с него снимается ImageData, которая и служит материалом для обработки. Обработанную имадждату вставляем на основной холст методом putImageData.
//
    var canvas = $('canvas');
    var context = canvas.getContext('2d');

    var buffer = $('buffer');
    var buff = buffer.getContext('2d');

    var img = new Image();
    img.src = "slow.gif";

    buff.drawImage(img, 0, 0);
    
    var imgd = buff.getImageData(0, 0, img.width, img.height);
    var pix = imgd.data;

    for (var i = 0; i < pix.length; i += 4) {
        // do something
    }

    context.putImageData(imgd, 0, 0);
Меня не устраивают две вещи:

1) Почему я должен использовать костыль с невидимым канвасом даже если просто хочу получить имадждату одной картинки? Нет какого-нибудь метода вроде getDataFromImage?

2) Метод putImageData слишком медленный, плюс он не накладывается на контекст, а _заменяет_ его содержимое в своём прямоугольнике. Это значит, что даже своими прозрачными пикселами он затирает окружение. Есть ли способ обратно превратить объект ImageData в объект Image?


Часовой пояс GMT +3, время: 16:23.