| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Gray->RGB |
| Автор: ShurikA 20.3.2006, 14:44 | ||
| Такая тема: есть обьект CImage imgOriginal который в себе держит картинку. если я хочу сохранить етот imgOriginal в фаил вместе ц нарисованными на той же картинке линиями делаю следующее:
measureMgr->Paint отрицовывает в dcMemory всё что нужно. Всё прекрасно работает кроме одного: если картинка цветная, то всё сохраняется в цвете, б таком как и был нарисован. если же картинка Gray то сохраняется всё серым цветом. Я так понимаючто что бы всё сохранялось в цвете нужно переделать imgOriginal в цветную... Как? |
| Автор: ShurikA 20.3.2006, 15:43 | ||
| Прав!
именно так... |
| Автор: Romikgy 20.3.2006, 15:58 |
| ну так обработай каждый пискель, оттенок серого приравняй к R,G,B и будет те счастье |
| Автор: Earnest 20.3.2006, 17:47 | ||
Не надо. Проще предварительно скопировать из контекста серого растра в другой мемори контекст, который создать как цветной. |
| Автор: ShurikA 20.3.2006, 23:04 | ||
и как это сделать? |
| Автор: Earnest 21.3.2006, 14:45 |
| 1) Создать новый CImage, такого же размера, но полноцветный. 2) Попросить у него контекст 3) Скопировать туда оригинальный Image 4) Нарисовать поверх все, что тебе нужно 5) Сохранить новый Image в файл... |
| Автор: ShurikA 21.3.2006, 17:33 |
| Это всё понятно, но я не нашёл каким образом я сообщаю CImage что он полноцветный? |
| Автор: Earnest 21.3.2006, 17:56 | ||
А каким образом ты сообщаешь ему размеры? Параметр nBPP ни о чем не говорит?
|
| Автор: ShurikA 21.3.2006, 18:20 |
| Можно подумать что нет 8 битных цветных картинок... |
| Автор: Earnest 22.3.2006, 08:31 |
| 8-битные цветные отличаются от 8-битных серых палитрой. Если ты хочешь именно 8-битную цветную картинку, то установи новую палитру. Но тогда часть серых цветов исказится. |
| Автор: ShurikA 22.3.2006, 09:48 |
| И этом нет спору... |