Форум: "Потрепаться";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
ВнизMicrosoft перестарался Найти похожие ветки
← →
Igor__ (2003-07-23 08:38) [0]Есть API функция, называемая SetDIBits. И она при использовании палитры делает никому ненужную "оптимизацию". Например в палитре встречаются два одинаовых цвета (например 13 и 14 - черные), тогда при записи этой функцией все цвета под индексом 14(т.е. в параметрах, передаваемый массив содержит 14) запишутся под индексом 13 (т.е. первый индекс этого цвета).
Уже 3-й день мучаюсь над этой проблемой. Думал читать и писать картинку "ручками", но нехочу, ведь должно быть умное решение на API.
← →
MBo (2003-07-23 10:40) [1]действительно, такая "оптимизация" существует ;(
позволяет избавиться от этого запись через ScanLine или
http://www.delphimaster.ru/articles/pixels/index.html
← →
Igor__ (2003-07-23 18:16) [2]Можете себе представить - 2 дня в конференции WinApi стоял этот вопрос. Оказывается не только я давно не заходил в роздел "Статьи" :).
> MBo
Большое спасибо!!! Я вообще думал, что ScanLine использует GetDIBits и я так был в этом уверен, что не проверял :)))).
← →
MBo (2003-07-24 06:50) [3]Вообще-то я не представляю, зачем может понадобиться палитра с одинаковыми цветами.
Однако, если непременно хочется использовать SetDiBits, нужно использовать методы ТРИЗ Альтшуллера.
Требуется: занести с помощью GetDiBits нужнфе значения в массив данных диба.
Противоречие: хитрая палитра при работе GetDiBits мешает.
Преодоление: ПЕРЕД GetDiBits устанавливаем палитру со всеми разными цветами, ПОСЛЕ - меняем палитру на нужную.
← →
Igor__ (2003-07-24 08:55) [4]
> Вообще-то я не представляю, зачем может понадобиться палитра
> с одинаковыми цветами.
Очень даже надо, но очень даже редко. Если ты регулярно смотришь это конференцию, то знаеш, что я пишу прогу по стеганографии. При 8-битном растре я методом Флойда Стеинберга сужаю палитру (кстати, как это по научному называется) до , например 32 цветов. Потом заполняю этими 32 цветами палитру. Получается что я могу заменить три старших бита каждого байта в потоке растра, поскольку цвет при этом не изменица. Вот такая вот фича.
← →
Кот Бегемот (2003-07-24 09:00) [5]2MBo © (24.07.03 06:50)
>Вообще-то я не представляю, зачем может понадобиться палитра с одинаковыми цветами.
Может быть для установки прозрачности ??? - было два черных, а потом опаньки - и один цвет заменяется на фон :)
Хотя если это именно DIB то IMHO проще сделать один черный, а другой почти черный.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c