Processing:Примеры/Яркость
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Описание[1]
Этот пример демонстрирует, как изменять яркость части изображения. Фрагмент изображения, у которого нужно поменять яркость, рассчитывается исходя из его расстояния до курсора мышки.
Пример
PImage img;
void setup() {
size(640, 360);
frameRate(30);
img = loadImage("moon-wide.jpg");
img.loadPixels();
// массив pixels[] нужно загрузить только один раз,
// поскольку манипуляции с ним выполняются только в блоке draw(),
// но не для отрисовки фигур:
loadPixels();
}
void draw() {
for (int x = 0; x < img.width; x++) {
for (int y = 0; y < img.height; y++ ) {
// на основе 2-мерных данных рассчитываем значение «loc»,
// где будут храниться данные о месторасположении пикселя:
int loc = x + y*img.width;
// извлекаем из изображения значения R,G,B:
float r,g,b;
r = red (img.pixels[loc]);
//g = green (img.pixels[loc]);
//b = blue (img.pixels[loc]);
// рассчитываем уровень яркости,
// опираясь на близость фрагмента изображения к курсору мышки:
float maxdist = 50;//dist(0,0,width,height);
float d = dist(x, y, mouseX, mouseY);
float adjustbrightness = 255*(maxdist-d)/maxdist;
r += adjustbrightness;
//g += adjustbrightness;
//b += adjustbrightness;
// задаем границы для диапазона цветовых (RGB) значений,
// этот диапазон должен быть 0-255:
r = constrain(r, 0, 255);
//g = constrain(g, 0, 255);
//b = constrain(b, 0, 255);
// задаем новое цветовое значение
// и присваиваем его пикселю на экране:
//color c = color(r, g, b);
color c = color(r);
pixels[y*width + x] = c;
}
}
updatePixels();
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |