неудобства с 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, время: 18:09. |