codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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; }
Private
[
?
]
Run code
Submit