crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QImage Яркость и контрастность
Nof1000
  опции профиля:
сообщение 15.11.2011, 20:26
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 15.11.2011
Пользователь №: 3003

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет, возник вопрос как изменить яркость и контрастность, сначала думал в сторону QPixmap но потом все копнув информации,
Понял что лучше для этого подойдет QImage пытался сделать что-то свое, но так и ничего путного не вышло,
Поискав так скажем функционал для этого, наткнулся на вот это Тыц

Решил попробовать.

img = changeBrightness(img, -100); // Задаем яркость в самый минимум
img = changeContrast(img, 500) // Задаем контрастность в максимум


Но в результате контрастность в любом случаи не максимальна,
В моем случаи очень важно задать яркость и контрастность в минимальное и максимальное значение.
Поискав в интернетах так и не нашел ничего.
И вот решил задать вопрос:
Куда мне копать или смотреть чтобы реализовать свой вариант?
Может если уже готовые варианты но только так скажем более функциональные чем тот что выше.
Или же все проще и данный функционал есть в самом Qt?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
wiz29
  опции профиля:
сообщение 17.11.2011, 8:52
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


я бы не мучился, если картинки небольшие то можно сделать так
//QImage img; some input image with resulution (w, h)
//int lightness; 0 - 0 %; 255 - 100%
void setImageLightness(QImage& img, int lightness)
{
    int w = img.width();
    int h = img.height();
    for (int y = 0; y < h; ++y)
    {
        for(int x = 0; x < w; ++x)
        {
            QColor pixel = image.pixel(x, y);
            pixel.setHsl(pixel.hue(), pixel.saturation(), lightness, pixel.alpha());
            image.setPixel(x, y, pixel.rgba());
        }
    }
}

для контраста аналогично.
код не пробовал собирать, но думаю должно работать.

только не забывай, что картинка хранится не в hsl пространстве, и если ты хочешь интерактивно обрабатывать ее, то должен держать оригинал который хочешь обрабатывать отдельно и на каждой итерации применять метод к копии данной картинки с новым параметром иначе результат не будет удовлетворять твоим ожиданиям.:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2024, 5:07