PDA

View Full Version : سوال: خواندن , نوشتن فایل bmp



user41
یک شنبه 20 اسفند 1391, 16:19 عصر
سلام
من یه کد با سی ++ نوشتم از روی فایل bmp می خونه توی آرایه دوبعدی میریزه ولی سطر را به جای ستون قرار می ده تا عکس 90 درجه بچرخه بعد توی فایل bmpدیگه می نویسه ولی فایل را که باز می کنم چیزی ننوشته می شه یکی بگه اشکال کد من کجاست؟
#include <fstream>
#include <iostream>
using namespace std;

int main() {

long int width=686;
long int height=800 ;
/* open file */
FILE * bitmap_file= fopen("file1.bmp", "rb");

if(!bitmap_file) {

printf("Could not find file.\n");
fclose(bitmap_file);
return 0;

}

printf("File opened.\n");
typedef struct buffer1
{
int red;
int green;
int blue;
} buffer1;

static buffer1 buffer_bitmap1[686][800];

fseek(bitmap_file, 0, SEEK_SET);
int count=0;
for(int i = 0; i <800; ++i)
{
for(int j = 0; j <686; ++j)
{

fread(&buffer_bitmap1[j][i].red , 1, 1, bitmap_file); /*for rotate bmp exchange the width with height in matrix.*/
fread(&buffer_bitmap1[j][i].green, 1, 1, bitmap_file);
fread(&buffer_bitmap1[j][i].blue, 1, 1, bitmap_file);
count=count+8;
fseek(bitmap_file,count, SEEK_CUR); /*move pointer*/
}

}

fclose(bitmap_file);



FILE *bitmap_file1= fopen("file2.bmp", "a");
count=0;
fseek(bitmap_file, 0, SEEK_SET);

for(int i = 0; i <686; ++i){
for(int j = 0; j <800; ++j) {


fwrite(&buffer_bitmap1[i][j].red,1,1,bitmap_file1);
fwrite(&buffer_bitmap1[i][j].blue,1,1,bitmap_file1);
fwrite(&buffer_bitmap1[i][j].green,1,1,bitmap_file1);
count=count+8;
fseek(bitmap_file, 8, SEEK_CUR); /*move pointer*/

}

}
fclose(bitmap_file);
return 0;

}