Bitmap画像をC言語で編集するには
Posted: 2011年1月30日(日) 22:49
24Bitmap画像をC言語で編集する方法についての質問です。
自分で調べながら
画像1を読み込む→画像2に書き込む(実質的な内容のコピー処理)
ことは出来たのですが、これを
画像1を読み込む→指定箇所のblueを0にする→画像2に書き込む
にするところで躓いています。
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fo,*fw
unsigned char obyte;
int i,size;
size=画像のbyte数を手動で入力
fo=fopen("testa.bmp","r");
fw=fopen("testb.bmp","w");
指定箇所のblueを0にする処理
i = 0;
while(i != size){
fread(&obyte,1, 1, fo);
fwrite(&obyte,1, 1, fw);
}
fclose(fo);
fclose(fw);
}
bmpの知識として、55byteから各位置のRGBデータになるということはわかっていますが
fo=fopen("test1.bmp","r");
fread(header,1,54,fo);
fread(pix,1,size-54,fo);
pix[0][0][0] = 0;(画像の左下のblueを0に)
fw=fopen("test2.bmp","w");
fwrite(&fo,1,54,header);
fwrite(&fo,1,size-54,pix);
のように処理してみても"test2.bmp"の中身が無い=fwriteが機能していない状態です。
知恵を貸していただけると助かります。
自分で調べながら
画像1を読み込む→画像2に書き込む(実質的な内容のコピー処理)
ことは出来たのですが、これを
画像1を読み込む→指定箇所のblueを0にする→画像2に書き込む
にするところで躓いています。
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fo,*fw
unsigned char obyte;
int i,size;
size=画像のbyte数を手動で入力
fo=fopen("testa.bmp","r");
fw=fopen("testb.bmp","w");
指定箇所のblueを0にする処理
i = 0;
while(i != size){
fread(&obyte,1, 1, fo);
fwrite(&obyte,1, 1, fw);
}
fclose(fo);
fclose(fw);
}
bmpの知識として、55byteから各位置のRGBデータになるということはわかっていますが
fo=fopen("test1.bmp","r");
fread(header,1,54,fo);
fread(pix,1,size-54,fo);
pix[0][0][0] = 0;(画像の左下のblueを0に)
fw=fopen("test2.bmp","w");
fwrite(&fo,1,54,header);
fwrite(&fo,1,size-54,pix);
のように処理してみても"test2.bmp"の中身が無い=fwriteが機能していない状態です。
知恵を貸していただけると助かります。