Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2011, 18:07
Новичок на форуме
Отправить личное сообщение для util Посмотреть профиль Найти все сообщения от util
 
Регистрация: 09.09.2011
Сообщений: 1

неудобства с 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?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск