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

Открытие и запись bmp-файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как подсчитать Длину строки в двойном массиве char http://www.cyberforum.ru/cpp-beginners/thread245401.html
Как подсчитать Длину строки в двойном массиве char char c; int a; for(int j=0;j<10;j++) for(int i=0;i<10;i++) cin >> c;//Здесь я в вожу содержание //а здесь нужно в a засунуть длину строки c;
C++ работа с файлами Подскажите, как в текстовом файле напечатать все строки, длина которых равна заданному числу? http://www.cyberforum.ru/cpp-beginners/thread245378.html
C++ Нахождение точки пересечения функций
Необходимо вычислить абсциссы точек пересечения 3 функций. Отрезки, где программа будет искать точки пересечения, определить вручную. Сделать методом хорд (секущих). В программе описать функцию root(f, g, a, b, esp, x, f1, f2), где f и g - функции, а,b - отрезок, где точки пересечения, esp - точность (короче говоря, шаг, с которым функция проходит отрезок ), x - корень, f1, g1 - производные. ...
решение на c++ C++
Добрый день... Не могу решить 2 задачи...И не знаю где ошибка... Прошу пожалуйста - укажите на ошибки(помогите их исправить), буду вам очень признателен за помощь.. Задача №1 Папа Карло подарил Буратино 1 доллар в его первый день рождения, а экономный Буратино сложил подарок в банку. Каждый последующий год папа Карло удваивал свой предыдущий подарок и прибавлял к нему столько долларов,...
C++ Знаки елементов. http://www.cyberforum.ru/cpp-beginners/thread245368.html
Условие: Ввести с клавиатуры N элементов и проверить чередуются ли знаки. Если да , то вывести на экран "знаки одинаковые". Если нет, то написать все элементы со знаком "+" или "-". С++ Добавлено через 24 минуты плс срочно надо... Добавлено через 35 секунд
C++ Преобразованиие Хафа для линий через opencv #include <stdafx.h> #include <cv.h> #include <highgui.h> #include <math.h> int main(int argc, char** argv) { argv = "images/p1.png"; IplImage* image = cvLoadImage( argv, CV_LOAD_IMAGE_GRAYSCALE подробнее

Показать сообщение отдельно
Авега
Сообщений: n/a
25.10.2013, 18:53     Открытие и запись bmp-файла
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*ПОМОГИТЕ ПОАЛУЙСТА!!!
         открыли файл. записали в матрицу (трёхмерный массив) RGB. закрыли файл. открыли другой. записываем в           другой из матрицы. если выравнивать не требуется - все хорошо. если требуется - то танцы с бубном. как с этим бороться? заранее спасибо.      
*/
 
 
 
 
 
 #include<iostream>
#include "Windows.h";
using namespace std;
void image_in_txt(void);
int main()
{       
 
     
     BITMAPFILEHEADER BMP_FILE_HEADER;
     BITMAPINFOHEADER BMP_IMAGE_HEADER;
     RGBTRIPLE RGB;
        char***BMP_MATRIX_MAP=NULL;
        FILE * f1, * f2,* f3;
     /////////////////////////////////////////////   
        f1 = fopen("1.bmp", "r+b");
        f2 = fopen("2.bmp", "w+b");
        f3 = fopen("2.bmp", "w+b");
 
        fread(&BMP_FILE_HEADER,sizeof(BMP_FILE_HEADER),1,f1);               //Г‡Г*ïèõèâГ*ГҐГ¬ ГґГ*éëîâûé Г§Г*ãîëîâîê Гў ñòðóêòóðó BITMAPFILEHEADER
        fwrite(&BMP_FILE_HEADER, sizeof(BMP_FILE_HEADER), 1, f2);   //
        fread(&BMP_IMAGE_HEADER,sizeof(BMP_IMAGE_HEADER),1,f1);               //Г‡Г*ïèõèâГ*ГҐГ¬ Г§Г*ãîëîâîê èçîáðГ*æåГ*ГЁГї Гў ñòðóêòóðó BITMAPINFOHEADER
        fwrite(&BMP_IMAGE_HEADER, sizeof(BMP_IMAGE_HEADER), 1, f2);   //
         ///////////////////////////////////////////////////////////////
        BMP_MATRIX_MAP=new char**[BMP_IMAGE_HEADER.biHeight];
        for(int i=0;i<BMP_IMAGE_HEADER.biHeight;i++)
        {
            BMP_MATRIX_MAP[i]=new char*[BMP_IMAGE_HEADER.biWidth];
            for(int j=0;j<BMP_IMAGE_HEADER.biWidth;j++)
            {
                BMP_MATRIX_MAP[i][j]=new char[3];
            }
        }
    ///////////////////////////////////////////////////////////////
    size_t padding = 0;
    if ((BMP_IMAGE_HEADER.biWidth * 3) % 4) padding = 4 - (BMP_IMAGE_HEADER.biWidth * 3) % 4;
 
        for(int i=0;i< BMP_IMAGE_HEADER.biHeight;i++)
        {
                for (int j = 0; j < BMP_IMAGE_HEADER.biWidth; j++)
                {
 
                        fread(&RGB, sizeof(RGB),1, f1);
                        
                        
                        printf("blue  : %d\n",RGB.rgbtBlue);
                        printf("Green : %d\n",RGB.rgbtGreen);
                        printf("Red   : %d\n",RGB.rgbtRed);
                        printf("\n");
                        
                        BMP_MATRIX_MAP[i][j][0]   = RGB.rgbtBlue;
                        BMP_MATRIX_MAP[i][j][1] = RGB.rgbtGreen;
                        BMP_MATRIX_MAP[i][j][2] = RGB.rgbtRed;
                        
                        fwrite(&RGB, sizeof(RGB), 1, f2);
 
                        
                }
                printf("\n");
                if(padding != 0) 
                {
                    fread(&RGB, padding,1, f1);
                                printf("        blue  : %d\n",RGB.rgbtBlue);
                                printf("        Green : %d\n",RGB.rgbtGreen);
                                printf("        Red   : %d\n",RGB.rgbtRed);
                                printf("\n");
                    fwrite(&RGB, padding, 1, f2);
                }
                
        }
                
        fclose(f1);
        fclose(f2);
        
    /////////////////////////////////////////////////   
        for(int i=0;i< BMP_IMAGE_HEADER.biHeight;i++)
        {
                for (int j = 0; j < BMP_IMAGE_HEADER.biWidth; j++)
                {
     
                           
                        RGB.rgbtBlue   =    BMP_MATRIX_MAP[i][j][0] ;
                         RGB.rgbtGreen  =   BMP_MATRIX_MAP[i][j][1] ;
                         RGB.rgbtRed    =   BMP_MATRIX_MAP[i][j][2] ;
                                                
                            printf("Matrix_map: [%d] [%d] = { ",i,j);
                            printf("<<Blue  : %d>> ",RGB.rgbtBlue);
                            printf("<<green : %d>> ",RGB.rgbtGreen);
                            printf("<<red   : %d>> }\n ",RGB.rgbtRed);
                            cout<<"================="<<endl;
                }
                cout<<"================="<<endl;
        }
        ///////////////////////////////////////////////////////////////
        
        
        fwrite(&BMP_FILE_HEADER, sizeof(BMP_FILE_HEADER), 1, f3);   
        fwrite(&BMP_IMAGE_HEADER, sizeof(BMP_IMAGE_HEADER), 1, f3);
        
        padding = 0;
        char c =0;
    if ((BMP_IMAGE_HEADER.biWidth * 3) % 4) padding = 4 - (BMP_IMAGE_HEADER.biWidth * 3) % 4;
 
        for(int i=0;i< BMP_IMAGE_HEADER.biHeight;i++)
        {
                for (int j = 0; j < BMP_IMAGE_HEADER.biWidth; j++)
                {
 
                       /// fread(&RGB, sizeof(RGB),1, f1);
                        
                        
                        /*printf("blue  : %d\n",RGB.rgbtBlue);
                        printf("Green : %d\n",RGB.rgbtGreen);
                        printf("Red   : %d\n",RGB.rgbtRed);
                        printf("\n");*/
                        
                        RGB.rgbtBlue = BMP_MATRIX_MAP[i][j][0];
                         RGB.rgbtGreen =BMP_MATRIX_MAP[i][j][1];
                         RGB.rgbtRed =BMP_MATRIX_MAP[i][j][2];
                        
                        fwrite(&RGB, sizeof(RGB), 1, f2);
 
                        
                }
                printf("\n");
                if(padding != 0) 
                {
                    c=255;
                    fwrite(&c, sizeof(char), 1, f2);
                    
                }
                
        }
                
        fclose(f3);
        
        image_in_txt();
        
   return 0;
}
Добавлено через 14 минут
вопрос снят разобрался спасибо =)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru