[ create a new paste ] login | about

Link: http://codepad.org/9jTAUdhP    [ raw code | output | fork ]

C++, pasted on Nov 19:
#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
	BITMAPFILEHEADER bmfh;
	BITMAPINFOHEADER bmih;
	FILE *fp = NULL;

	int inwidth,inheight,insize, plt_count;

	// 赤
	fopen_s(&fp, "赤rec00「RGB」.bmp", "rb");
	if(fp==NULL)
	{
		printf("画像の読み込みに失敗");
		exit (-1); /*処理を継続できないので終了する*/
	}
	fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
	fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
	inwidth = bmih.biWidth;
	inheight = bmih.biHeight;
	insize = inwidth * inheight;
	plt_count = (!bmih.biClrUsed)?256:bmih.biClrUsed ;
	RGBQUAD* r_plt ;
	unsigned char* red;
	r_plt = new RGBQUAD[plt_count] ;
	red = new unsigned char[insize];
	fread( r_plt , sizeof(RGBQUAD), plt_count , fp );
	fread(red, insize, 1, fp);
	fclose(fp);

	// 緑
	fopen_s(&fp, "緑rec00「RGB」.bmp", "rb");
	if(fp==NULL)
	{
		printf("画像の読み込みに失敗");
		exit (-1); /*処理を継続できないので終了する*/
	}
	fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
	fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
	plt_count = (!bmih.biClrUsed)?256:bmih.biClrUsed ;
	RGBQUAD* g_plt ;
	unsigned char* green;	
	g_plt = new RGBQUAD[plt_count] ;
	green = new unsigned char[insize];	
	fread( g_plt , sizeof(RGBQUAD), plt_count , fp );
	fread(green, insize, 1, fp);
	fclose(fp);

	// 青
	fopen_s(&fp, "青rec00「RGB」.bmp", "rb");
	if(fp==NULL)
	{
		printf("画像の読み込みに失敗");
		exit (-1); /*処理を継続できないので終了する*/
	}
	fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
	fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
	plt_count = (!bmih.biClrUsed)?256:bmih.biClrUsed ;
	RGBQUAD* b_plt ;
	unsigned char* blue;
	b_plt = new RGBQUAD[plt_count] ;
	blue = new unsigned char[insize];
	fread( b_plt , sizeof(RGBQUAD), plt_count , fp );
	fread(blue, insize, 1, fp);
	fclose(fp);


	// 24bitビットマップで保存する
	RGBTRIPLE* rgbrec;
	rgbrec = new RGBTRIPLE[insize];
	for (int a=0; a<insize; a++)
	{
		rgbrec[a].rgbtRed	= r_plt[red[a]].rgbRed ;
		rgbrec[a].rgbtGreen	= g_plt[green[a]].rgbGreen ;
		rgbrec[a].rgbtBlue	= b_plt[blue[a]].rgbBlue ;				
	}

	bmfh.bfType = 0x4D42;
	bmfh.bfSize = 54+sizeof(RGBTRIPLE)*insize;
	bmfh.bfReserved1 = 0;
	bmfh.bfReserved2 = 0;
	bmfh.bfOffBits = 54;

	bmih.biSize = 40;
	bmih.biWidth = inwidth;
	bmih.biHeight = inheight;
	bmih.biPlanes = 1;
	bmih.biBitCount = 24;
	bmih.biCompression = 0;
	bmih.biSizeImage = sizeof(RGBTRIPLE)*insize;
	bmih.biXPelsPerMeter = 0;
	bmih.biYPelsPerMeter = 0;
	bmih.biClrUsed = 0;
	bmih.biClrImportant = 0;

	fopen_s(&fp, "rec「RGB」.bmp" , "wb" );
	fwrite( &bmfh , sizeof(BITMAPFILEHEADER) , 1 , fp );
	fwrite( &bmih , sizeof(BITMAPINFOHEADER) , 1 , fp );
	fwrite( rgbrec , sizeof(RGBTRIPLE) , insize , fp );
	fclose( fp );


	delete [] red ;
	delete [] r_plt ;
	delete [] green ;
	delete [] g_plt ;
	delete [] blue ;
	delete [] b_plt ;
	delete [] rgbrec ;

	return 0;
}


Output:
1
2
3
4
Line 19: error: stdafx.h: No such file or directory
Line 20: error: Windows.h: No such file or directory
Line 4: error: '_TCHAR' has not been declared
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: