Форум программистов, компьютерный форум CyberForum.ru

bmp 8 - C++

Восстановить пароль Регистрация
 
JJJJ
0 / 0 / 1
Регистрация: 17.12.2013
Сообщений: 11
17.12.2013, 23:48     bmp 8 #1
Помогите пожалуйста, нужно реализовать алгоритм Линде-Бузо-Грея для BMP файла. Проблема появляется при записи файла в формат bmp 8 - windows не может вывести мою картинку, в то время как открывая ее в фотошопе все вполне понятно.
Вот собственно функция(y - палитра, x - значения растра):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int write_bmp8(char *name,int H,int W,char**y,char**x){
    ofstream ofsb(name, ios::binary);
    bfh->bfOffBits=54 + 1024;   
    cout<<bfh->bfOffBits<<endl;
    bfh->bfSize = bfh->bfOffBits + sizeof(char)*W*H+H*((sizeof(char)*W) % 4);
    cout<<bfh->bfSize<<endl;
     bih->biSize = sizeof(bih);
     bih->biBitCount = 8;
     bih->biClrUsed = 0;                         
     bih->biCompression = 0;
     bih->biHeight = H;
     bih->biWidth = W;
     bih->biPlanes = 1;
    ofsb.write(bf,sizeof(BITMAPFILEHEADER));
    ofsb.write(bi,sizeof(BITMAPINFOHEADER));
    for(int i=0;i<256;i++){
        for(int j=0;j<3;j++)
            ofsb.write((char*)&y[i][j],1);
        ofsb.write((char*)&y[i][4],1);
    }
 
    for (int i = 0; i < bih->biHeight; ++i){
        for (int j = 0; j < bih->biWidth ; j++){
            ofsb.write((char*)&x[i][j],1);
        }
        ofsb.write((char*)&x[i][4],(3*W)%4);
    }
    return 0;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 23:48     bmp 8
Посмотрите здесь:

C++ bmp (24 битный)
C++ [C++] 24-битные BMP
C++ BMP - файл
C++ bmp в C++
Считывание bmp C++
C++ Работа с BMP-файлами (класс "8 битное BMP изображение)
C++ Открытие .bmp
Стеганография в BMP C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vitecd
18 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 59
18.12.2013, 03:17     bmp 8 #2
1. в цикле удобнее будет читаться обращение к переменным H, W и памяти меньше займет.
2. палитра точно правильная?
3. приложите файлик, который получается, точно смогу сказать, где собака.

PS рекомендую biClrUsed указать 256 и biClrImportant аналогично. Почему? спецификацию почитайте.
PPS проверьте значение bfh->bfSize
Yandex
Объявления
18.12.2013, 03:17     bmp 8
Ответ Создать тему
Опции темы

Текущее время: 09:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru