Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен алгоритм смены "насыщенности"... 
:(
    Опции темы
BorisVorontsov
Дата 17.3.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Нужена достаточно простая формула, по которой можно изменить насыщенность изображения...

Код
'Фильтр "Насыщенность"
Public Function Saturation (ByVal hCanvasDC As Long, ByRef PR As PICREGION) As Long
    On Error GoTo hError

    Dim BMI As BITMAPINFO
    Dim hTmpDC As Long, hTmpBitmap As Long, hTmpObj As Long

    Dim Pixels1() As Byte
    Dim i As Long, j As Long
    Dim lR As Long, lG As Long, lB As Long

    hTmpDC = CreateCompatibleDC(hCanvasDC)
    hTmpBitmap = CreateCompatibleBitmap(hCanvasDC, PR.prWidth, PR.prHeight)
    hTmpObj = SelectObject(hTmpDC, hTmpBitmap)

    BMI.bmiHeader.biSize = 40
    BMI.bmiHeader.biWidth = PR.prWidth
    BMI.bmiHeader.biHeight = -PR.prHeight
    BMI.bmiHeader.biPlanes = 1
    BMI.bmiHeader.biBitCount = 32
    BMI.bmiHeader.biCompression = 0&

    Call BitBlt(hTmpDC, 0, 0, PR.prWidth, PR.prHeight, hCanvasDC, 0, 0, &HCC0020)
    ReDim Pixels1(0 To 3, 0 To PR.prWidth - 1, 0 To PR.prHeight - 1)

    Call GetDIBits(hTmpDC, hTmpBitmap, 0, PR.prHeight, Pixels1(0, 0, 0), BMI, 0&)

    For i = PR.prLeft To (PR.prWidth - 1)
        For j = PR.prTop To (PR.prHeight - 1)
            lR = Pixels1(2, i, j)
            lG = Pixels1(1, i, j)
            lB = Pixels1(0, i, j)

            'Какой код сюда вставить, дабы изменить уровень насыщенности?

            Pixels1(2, i, j) = lR
            Pixels1(1, i, j) = lG
            Pixels1(0, i, j) = lB
        Next j
    Next i

    Call SetDIBitsToDevice(hCanvasDC, 0, 0, PR.prWidth, PR.prHeight, 0, 0, 0, _
        PR.prHeight, Pixels1(0, 0, 0), BMI, 0&)
    Call SelectObject(hTmpDC, hTmpObj)
    Call DeleteObject(hTmpBitmap)
    Call DeleteDC(hTmpDC)

    Saturation = 1

hError:
    'Exit Function
End Function



--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
amt
Дата 29.3.2006, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Посмотри может это поможет
http://forum.vingrad.ru/index.php?showtopi...%87%D0%BA%D0%B8
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
BorisVorontsov
Дата 30.3.2006, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Нет, насыщенности, да ещё через RGB там нет... Да я так понимаю, что иначе как конвертированием в, например, HSL, насыщенности не сменишь.

Так что вопрос решён.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.