Форум программистов, компьютерный форум 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++ работа с файлами Подскажите, как в текстовом файле напечатать все строки, длина которых равна заданному числу? http://www.cyberforum.ru/cpp-beginners/thread245378.html
C++ Нахождение точки пересечения функций
Необходимо вычислить абсциссы точек пересечения 3 функций. Отрезки, где программа будет искать точки пересечения, определить вручную. Сделать методом хорд (секущих). В программе описать функцию...
решение на c++ C++
Добрый день... Не могу решить 2 задачи...И не знаю где ошибка... Прошу пожалуйста - укажите на ошибки(помогите их исправить), буду вам очень признателен за помощь.. Задача №1 Папа Карло...
C++ Знаки елементов. http://www.cyberforum.ru/cpp-beginners/thread245368.html
Условие: Ввести с клавиатуры N элементов и проверить чередуются ли знаки. Если да , то вывести на экран "знаки одинаковые". Если нет, то написать все элементы со знаком "+" или "-". С++ ...
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,... подробнее

Показать сообщение отдельно
Авега
Сообщений: n/a
25.10.2013, 18:53
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