Шрифт:
21.4.14. Манипулирование пикселами
Метод
getlmageData
возвращает объект ImageData
, представляющий массив пикселов (в виде компонентов R, G, В и А) из прямоугольной области холста. Создать пустой объект ImageData
можно с помощью метода createImageData
. Пикселы в объекте ImageData
доступны для записи, благодаря чему их можно изменить как угодно и затем скопировать обратно в холст вызовом метода putlmageData.
Эти методы манипулирования пикселами предоставляют низкоуровневый доступ к холсту. Координаты и размеры области, передаваемой методу
getlmageData,
задаются в системе координат по умолчанию: ее размеры измеряются в CSS-пикселах и без учета текущего преобразования. При вызове метода putlmageData
координаты также задаются в системе координат по умолчанию. Кроме того, метод putImageData
игнорирует все графические атрибуты. Он не использует механизм композиции, не умножает пикселы на значение свойства globalAlpha
и не рисует тени. Методы манипулирования пикселами могут пригодиться для реализации обработки изображений. Пример 21.10 демонстрирует, как создать простейший эффект размытия или «смазывания» быстро движущегося объекта в элементе
<canvas>~
Пример демонстрирует применение методов getlmageData
и putlmageData
и показывает, как выполнять итерации по пикселам в объекте ImageData
и изменять их значения, но без подробного описания. Полная информация о методах getlmageData
и putlmageData
приводится в справочной статье CanvasRenderingContext2D
, а подробное описание объекта ImageData
– в его собственной справочной статье. Пример 21.10. Создание эффекта размытия быстродвижущегося объекта с помощью объекта
ImageData
// "Смазать" пикселы прямоугольной области вправо, чтобы воспроизвести эффект быстрого
// движения объекта справа налево. Значение п должно быть равно или больше 2. Нем больше
// значение, тем сильнее эффект смазывания. Координаты и размеры прямоугольной области
// задаются в системе координат по умолчанию,
function smear(c, п, х, у, w, h) {
// Получить объект ImageData, представляющий пикселы области эффекта
var pixels = c.getImageData(x,у,w,h);
// Смазывание выполняется на месте, и потому требуется получить только
// исходный объект ImageData. Некоторые алгоритмы обработки изображений требуют
// использования дополнительного объекта ImageData для сохранения трансформированных
// значений пикселов. Если бы потребовался промежуточный буфер вывода, можно было бы
// создать новый объект ImageData с теми же размерами следующим способом:
// var output_pixels = с.createlmageData(pixels):
// Эти размеры могут отличаться от значений аргументов w и h: на каждый
// CSS-пиксел может приходиться несколько аппаратных пикселов,
var width = pixels.width,
height = pixels.height:
// Это массив байтов, хранящий информацию о пикселах, слева направо и сверху вниз.
// Для каждого пиксела отводится 4 последовательных байта, в порядке R,G,В,А.
var data = pixels.data;
// Смазать каждый пиксел после первого в каждой строке, заменив его суммой
// 1/n-й доли его собственного значения и m/n-й доли значения предыдущего пиксела
var m = n-1;
for(var row = 0; row < height: row++) { // Для каждой строки
var і = row*width*4 +4; // Индекс второго пиксела в строке
Жанры
- Романы
- Приключения
- Детективы
- Техно триллер
- Дамский детективный роман
- Исторические детективы
- Классические детективы
- Шпионские детективы
- Триллеры
- Юридический триллер
- Крутой детектив
- Полицейские детективы
- Медицинский триллер
- Иронические детективы
- Боевики
- Криминальные детективы
- Политические детективы
- Маньяки
- Зарубежные детективы
- Прочие Детективы
- Спецслужбы
- Драматургия
- Фантастика
- Хентай
- Ранобэ
- Сянься
- Дорама
- Уся
- Аниме
- Космоопера
- Юмористическая фантастика
- Боевая фантастика
- Героическая фантастика
- Технофэнтези
- Готический роман
- Социально-философская фантастика
- Попаданцы
- Историческая фантастика
- Ироническая фантастика
- Зарубежная фантастика
- Историческое фэнтези
- Юмористическое фэнтези
- Детективная фантастика
- Эпическая фантастика
- Мистика
- Космическая фантастика
- Фантастика: прочее
- Постапокалипсис
- Научная фантастика
- Киберпанк
- Альтернативная история
- Ненаучная фантастика
- РПГ
- Стимпанк
- Ироническое фэнтези
- Ужасы и мистика
- Сказочная фантастика
- Фэнтези
- Городское фэнтези
- Эзотерика
- Проза
- Военная проза
- Легкая проза
- Сентиментальная проза
- Советская классическая проза
- Антисоветская литература
- Афоризмы
- Эпистолярная проза
- Новелла
- Семейный роман
- Рассказ
- Классическая проза
- Эпопея
- Эссе
- Проза прочее
- Повесть
- Магический реализм
- Современная проза
- Контркультура
- Роман
- Историческая проза
- Русская классическая проза
- Феерия
- Стихи и поэзия
- Юмор
- Дом и досуг
- Рыбалка
- Охота
- Здоровье детей
- Домашние животные
- Воспитание детей
- Отдых / туризм
- Зарубежная прикладная литература
- Прочее домоводство
- Прикладная литература
- Домашнее хозяйство
- Кулинария
- Медицина и здоровье
- Сделай сам
- Спорт
- Хобби и ремесла
- Образовательная литература
- Сад и Огород
- Здоровье и красота
- Развлечения
- Коллекционирование
- Секс / секс-руководства
- Образование и наука
- Боевые искусства
- Органическая химия
- Обществознание
- Военная история
- Ветеринария
- Ораторское искусство / риторика
- Физика
- Химия
- Семейная психология
- Военная техника и вооружение
- Иностранные языки
- Прочая научная литература
- Психотерапия и консультирование
- Биохимия
- Cпецслужбы
- Астрономия и Космос
- Школьные учебники
- Учебная и научная литература
- Учебники
- Государство и право
- Психология
- Литературоведение
- История
- Научно-популярная литература
- Политика
- Детская психология
- Юриспруденция
- Шпаргалки
- Педагогика
- Физическая химия
- Медицина
- Биофизика
- Языкознание
- Зарубежная образовательная литература
- Зоология
- Геология и география
- Краткое содержание
- Зарубежная психология
- Саморазвитие / личностный рост
- Технические науки
- Религиоведение
- Военное дело
- Личная эффективность
- Аналитическая химия
- Рефераты
- Экология
- Философия
- Альтернативная медицина
- Математика
- Культурология
- Военное дело: прочее
- Ботаника
- Биология
- Словари и Энциклопедии
- Финансы и бизнес
- Отраслевые издания
- Бухучет и аудит
- Недвижимость
- Деловая литература
- Ценные бумаги
- Внешнеэкономическая деятельность
- Торговля
- Зарубежная деловая литература
- О бизнесе популярно
- Стартапы и создание бизнеса
- Корпоративная культура
- Управление, подбор персонала
- Маркетинг, PR, реклама
- Личные финансы
- Работа с клиентами
- Менеджмент
- Интернет-бизнес
- Поиск работы, карьера
- Малый бизнес
- Делопроизводство
- Государственное и муниципальное управление
- Банковское дело
- Экономика
- Книги по IT
- Техника
- Древние книги
- Документальное
- Прочее
- Интерьеры
- Газеты и журналы
- Театр
- Музыка
- Комиксы / манга
- Зарубежная классика
- Современная зарубежная литература
- Изобразительное искусство, фотография
- Мода и стиль
- Искусство и Дизайн
- Зарубежная литература о культуре и искусстве
- Фанфик
- Подростковая литература
- Шахматы
- Кино
- Культура и искусство
- Недописанное
- Классическая литература
- Без Жанра
- Народные
- Книги Для Детей
- Детские остросюжетные
- Сказки
- Детские стихи
- Прочая детская литература
- Детская образовательная литература
- Книги для дошкольников
- Детская фантастика
- Детские детективы
- Книга-игра
- Детский фольклор
- Буквари
- Детская проза
- Детская познавательная и развивающая литература
- Внеклассное чтение
- Зарубежные детские книги
- Детские приключения
Сейчас Читают
Запрети любить
Джейн Анна
Последний попаданец 12: финал часть 2
Зубов Константин
Ваше Сиятельство
Моури Эрли
Последняя Арена 2
Греков Сергей
Чужбина
Седой Василий
Вечная Война. Книга VI
Винокуров Юрий
Энфис 2
Кронос Александр
Камень. Книга вторая
Минин Станислав
Везунчик. Проводник
Бубела Олег Николаевич
Сотник
Ланцов Михаил Алексеевич