c言語を用いて画像の透明度をあげる方法を教えてください。
c言語を用いて画像の透明度をあげる方法を教えてください。
下プログラムの画像処理ができません。
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include "mybmpi.h"
/*メイン関数*/
int main(void)
{
int width, height;
int x, y;
BYTE *buffer_f; /*入力画像(前景)用メモリのポインタ*/
BYTE *buffer_b; /*入力画像(背景)用メモリのポインタ*/
BYTE *Rbuffer_f, *Gbuffer_f, *Bbuffer_f; /*入力(前景)用*/
BYTE *Rbuffer_b, *Gbuffer_b, *Bbuffer_b; /*入力(背景)用*/
BYTE *Rbuffer2, *Gbuffer2, *Bbuffer2; /*出力用*/
double tmp_pix;
double ratio=0.5; /*どの割合で混ぜるか ratio : 1-ratio */
/*前景画像ファイルを開く*/
buffer_f = LoadBitmap("front.bmp", &width, &height);
if(buffer_f==NULL)
{
/*ファイルが開けなかったので終了*/
return 0;
}
/*背景画像ファイルを開く*/
buffer_b = LoadBitmap("back.bmp", &width, &height);
if(buffer_b==NULL)
{
/*ファイルが開けなかったので終了*/
return 0;
}
/*RGBを色平面に分解*/
Rbuffer_f = (BYTE*)malloc( width*height ); /*メモリ確保*/
Gbuffer_f = (BYTE*)malloc( width*height );
Bbuffer_f = (BYTE*)malloc( width*height );
RGB2Plane(buffer_f, Rbuffer_f, Gbuffer_f, Bbuffer_f, width, height);
Rbuffer_b = (BYTE*)malloc( width*height ); /*メモリ確保*/
Gbuffer_b = (BYTE*)malloc( width*height );
Bbuffer_b = (BYTE*)malloc( width*height );
RGB2Plane(buffer_b, Rbuffer_b, Gbuffer_b, Bbuffer_b, width, height);
/*出力用*/
Rbuffer2 = (BYTE*)malloc( width*height ); /*メモリ確保*/
Gbuffer2 = (BYTE*)malloc( width*height );
Bbuffer2 = (BYTE*)malloc( width*height );
/*****************画像処理をここで行う********************/
for(y=0; y<height; y++){
for(x=0; x<width; x++){
/*この部分がわかりません*/
/*前景画像と背景画像を ratio : 1-ratio で合成する方法?*/
/*R,G,Bそれぞれについて同じ処理をする*/
}
}
/*******************ここまで******************************/
/*書き込み処理*/
Plane2RGB(buffer_f, Rbuffer2, Gbuffer2, Bbuffer2, width, height); /*bufferは入力のものを転用する*/
SaveBitmap("result.bmp", buffer_f, width, height);
/*メモリを解放する*/
free( buffer_f );
free( buffer_b );
free( Rbuffe
お礼
ご回答ありがとうございます。 Windows環境なのですができればコマンドラインやプログラムなしに操作できるGUIツールなどご存知でしたらご教示いただけますと幸いです。