灰度图像转换为.IMG .ras - 在Linux中的灰度在Windows白色和蓝色的? C [英] Grayscale image conversion .img to .ras - In Linux grayscale in Windows white and blue?! C

查看:308
本文介绍了灰度图像转换为.IMG .ras - 在Linux中的灰度在Windows白色和蓝色的? C的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想转换一个.IMG文件(512字节的头,512x512像素的每像素8位(值:0-255))到.ras文件。
要做到这一点我在文章末尾的​​C $ C $℃。
我的测试图像(test.img)的输出应该是一个黑/白图像 - 所以只包含值0或255。
但问题是,当我在windows编译C code(从底部),我得到的.ras文件是白色和明亮的蓝色?好奇的事是。当我编译C code在Linux中,那么结果是完全的黑/白?这怎么能来吗?
在这两个系统我用64位。

所以,你可以尝试一下:
1.编译C code。与:
gcc的-lm img2ras.c -o img2ras
2.控制台转换.IMG到.ras:img2ras test.img test.ras
3.观察.ras文件无论是瘸子,XnView的或PaintshopPro

您有任何线索如何这种尴尬的结果可以在不同的操作系统发生用gcc 4.8.1的版本相同?

test.img:
http://www.file-upload.net/download-8629102/test .img.html

img2ras.c

  / *这个程序接受一个输入文件(这是从图像
捕获板)和一个输出文件,它必须在命令中指定
线。输出文件是Sun rasterfile。用法:img2ras capfilename rastfilename该项目是由查克·霍恩和屠杀马克霍尔库姆* /#包括LT&;&stdio.h中GT;
#包括LT&;&fcntl.h GT;
#包括LT&;&errno.h中GT;
#包括LT&;&stdlib.h中GT;主(ARGC,ARGV)
    INT ARGC;
    的char * ARGV [];
            {/ ********** **********声明/    INT fd_in,fd_out;
/ * long int类型的buf [8];这是在报头中的整数* /
    静态CHAR BUF [] = {
0x59,0xa6,的0x6A,位0x95,为0x0,为0x0,0X2,为0x0,为0x0,
为0x0,0X2,为0x0,为0x0,为0x0,为0x0,0x8中,为0x0,为0x4,为0x0,
为0x0,为0x0,为0x0,为0x0,为0x1,为0x0,为0x0,为0x0,为0x1,为0x0,
为0x0,0x3中,为0x0,为0x0,为0x1,0X2,0x3中,为0x4,0x5的,为0x6,
为0x7,0x8中,0x9,为0xA,0XB,位于0xC,0xd中,0xe,0xF的,为0x10,
0×11,0×12,0x13,0x14的,为0x15,0x16,0x17已,为0x18,0x19符号,0X1A,
0x1b,为0x1c,0x1d,0X1E,为0x1F,0x20的,为0x21,0x22,0x23,0X24,
0x25,0×26,×27,0x28,0x29,0x2a,0x2B访问,0x2c,0x2d,0x2E之间,
值为0x2F,为0x30,0X31,0x32,0x33,0x34,0x35,0x36数据,0x37符号,0x38,
0x39,0x3a,0x3b,为0x3C,0x3D之间,0x3E的,0x​​3F的,0X40,×41,的0x42,
0x43中,0x44进行,×45,0×46,0X47,0x48,0x49,0x4a,0x4b,0x4c,
送出0x4d,0x4e,0x4f,为0x50,0x51,0×52,0x53,0x54,将0x55,0x56,
的0x57,将0x58,0x59,5AH即可,0x5b,0x5c,0x5d,0x5e,0x5F的,0x60的,
0x61,0X62,0x63,0x64,0x65,0x66,0x67,为0x68,0×69,的0x6A,
0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72(0x73)的,0x74,
0x75,0x76,0x77,0x78,0x79的,0x7a,0x7b,0x7c,0x7d,0x7e格式,
到0x7f,0x80的,0x81表示,为0x82,0X83,的0x84,0x85未,0x86可以,87H的,均为0x88,
0x89上,0x8a,0x8b,0x8c,0x8d,为0x8E,0x8f,0×90,0x91的信息,0x92,
0x93,0x94的,位0x95,0x96,0x97,0x98在全局,0x99,0x9A执行,0x9b,为0x9c,
0x9d,0x9e,0x9f,0XA0,0xa1,0xa2,0xA3执行,0xa4,0xA5的,0xa6,
0xa7,0xa8,0xa9,和0xAA,是0xAB,0xac,写入0xAD,0xae,0XAF,0XB0,
0xb1,0xb2,0xb3,0xb4,0xB5执行,0xb6,0xb7,0xb8,0xb9,0xba,
为0xBB,0xbc,0xbd,0xbe,为0xBF,将0xC0,将0xC0,为0xC2,为0xC2,0xc4,
0xc5,0xc6,0xc7,0xc8,0xc8,0xca,0xcb,含有0xCC,0XCD,0xce,
0xcf,0xd0,0xd1,0xd2,0xd2,0xd4,0xd5,0xd6,0xd7,0xd8,
0xd9,0xda,0xdb,的0xDC,0xdd,写0xDE,0xdf,0xe0的,0xe1,0xe2,
0xe3,0xe3,为0xE5,0xe6,0xe7,0xe8,0xe9,0xea,将0xEB,将0xEB,
0xed,0xee,0xef,0XF0,的0xf1,0xf2,0xf3,0xf3,0xf5,0xf5,
0xf7,0xF8时,0xf9,0xFA回应,0xFB的才能,0xFB的才能,是0xFD,是0xFD,0xFF的,为0x0,
为0x1,0X2,0x3中,为0x4,0x5的,为0x6,0x7的,0x8中,0x9,为0xA,
0XB,位于0xC,0xd中,0xe,0xF的,为0x10,为0x11,0×12,0x13,0x14的,
为0x15,0x16,0x17已,为0x18,0x19符号,0X1A,0x1b,为0x1c,0x1d,0X1E,
为0x1F,0x20的,为0x21,0x22,0x23,0X24,0x25,0×26,×27,0x28,
0x29,0x2a,0x2B访问,0x2c,0x2d,0x2E之间,值​​为0x2F,为0x30,0X31,0x32,
0x33,0x34,0x35,0x36数据,0x37符号,0x38,0x39,0x3a,0x3b,0x3C符号,
0x3D之间,0x3E的,0x​​3F的,0X40,×41,的0x42,0x43中,0x44进行,×45,0×46,
0X47,0x48,0x49,0x4a,0x4b,0x4c,送出0x4d,0x4e,0x4f,为0x50,
0x51,0×52,0x53,0x54,将0x55,0x56,的0x57,将0x58,0x59,5AH即可,
0x5b,0x5c,0x5d,0x5e,0x5F的,0x60的,0x61,0X62,0x63,0x64,
0x65,0x66,0x67,为0x68,0×69,的0x6A,0x6b,0x6c,0x6d,0x6e,
0x6f,0x70,0x71,0x72(0x73)的,0x74,0x75,0x76,0x77,0x78,
0x79的,0x7a,0x7b,0x7c,0x7d,0x7e格式,到0x7f,0x80的,0x81表示,为0x82,
0X83,的0x84,0x85未,0x86可以,87H的,均为0x88,0x89上,0x8a,0x8b,0x8c,
0x8d,为0x8E,0x8f,0×90,0x91的信息,0x92,0x93,0x94的,位0x95,0x96,
0x97,0x98在全局,0x99,0x9A执行,0x9b,为0x9c,0x9d,0x9e,0x9f,0XA0,
0xa1,0xa2,0xA3执行,0xa4,0xA5的,0xa6,0xa7,0xa8,0xa9,和0xAA,
是0xAB,0xac,写入0xAD,0xae,0XAF,0XB0,0xb1,0xb2,0xb3,0xb4,
0xB5执行,0xb6,0xb7,0xb8,0xb9,0xba,为0xBB,0xbc,0xbd,0xbe,
为0xBF,将0xC0,将0xC0,为0xC2,为0xC2,0xc4,0xc5,0xc6,0xc7,0xc8,
0xc8,0xca,0xcb,含有0xCC,0XCD,0xce,0xcf,0xd0,0xd1,0xd2,
0xd2,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,的0xDC,
0xdd,写0xDE,0xdf,0xe0的,0xe1,0xe2,0xe3,0xe3,为0xE5,0xe6,
0xe7,0xe8,0xe9,0xea,将0xEB,将0xEB,0xed,0xee,0xef,0XF0,
的0xf1,0xf2,0xf3,0xf3,0xf5,0xf5,0xf7,0xF8时,0xf9,0xFA回应,
0xFB的才能,0xFB的才能,是0xFD,是0xFD,0xFF的,为0x0,为0x1,0X2,0x3中,为0x4,
0x5的,为0x6,0x7的,0x8中,0x9,为0xA,0XB,位于0xC,0xd中,0xe,
0xF的,0×10,0×11,0×12,0x13,0x14的,为0x15,0x16,0x17已,为0x18,
的0x19,0X1A,0x1b,为0x1c,0x1d,0X1E,为0x1F,0x20的,为0x21,0x22,
0x23,0X24,0x25,0×26,×27,0x28,0x29,0x2a,0x2B访问,0x2c,
0x2d,0x2E之间,值​​为0x2F,为0x30,0X31,0x32,0x33,0x34,0x35,0x36数据,
0x37符号,0x38,0x39,0x3a,0x3b,为0x3C,0x3D之间,0x3E的,0x​​3F的,0X40,
×41,的0x42,0x43中,0x44进行,×45,0×46,0X47,0x48,0x49,0x4a,
0x4b,0x4c,送出0x4d,0x4e,0x4f,为0x50,0x51,0×52,0x53,0x54,
将0x55,0x56,的0x57,将0x58,0x59,5AH即可,0x5b,0x5c,0x5d,0x5e,
0x5F的,0x60的,0x61,0X62,0x63,0x64,0x65,0x66,0x67,为0x68,
0×69,的0x6A,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,
0x73,0x74,0x75,0x76,0x77,0x78,0x79的,0x7a,0x7b,0x7c,
0x7d,0x7e格式,到0x7f,0x80的,0x81表示,为0x82,0X83,的0x84,0x85未,0x86可以,
87H的,均为0x88,0x89上,0x8a,0x8b,0x8c,0x8d,为0x8E,0x8f,0×90,
0x91的信息,0x92,0x93,0x94的,位0x95,0x96,0x97,0x98在全局,0x99,0x9A执行,
0x9b,为0x9c,0x9d,0x9e,0x9f,0XA0,0xa1,0xa2,0xA3执行,0xa4,
0xA5的,0xa6,0xa7,0xa8,0xa9,和0xAA,是0xAB,0xac,写入0xAD,0xae,
0XAF,0XB0,0xb1,0xb2,0xb3,0xb4,0xB5执行,0xb6,0xb7,0xb8,
0xb9,0xba,为0xBB,0xbc,0xbd,0xbe,为0xBF,将0xC0,将0xC0,为0xC2,
为0xC2,0xc4,0xc5,0xc6,0xc7,0xc8,0xc8,0xca,0xcb,的0xCC,
0XCD,0xce,0xcf,0xd0,0xd1,0xd2,0xd2,0xd4,0xd5,0xd6,
0xd7,0xd8,0xd9,0xda,0xdb,的0xDC,0xdd,写0xDE,0xdf,0xe0的,
0xe1,0xe2,0xe3,0xe3,为0xE5,0xe6,0xe7,0xe8,0xe9,0xea,
将0xEB,将0xEB,0xed,0xee,0xef,0XF0,的0xf1,0xf2,0xf3,0xf3,
0xf5,0xf5,0xf7,0xF8时,0xf9,0xFA回应,0xFB的才能,0xFB的才能,是0xFD,是0xFD,
为0xFF
            };
    焦炭像素[1024]。 / *这是对于8比特像素* /
    unsigned int类型CT;    焦炭INFILE [36];
    烧焦OUTFILE [38];    字符* T_pixels; / *通过2行输入旋转* /
    诠释即使= 1;
    INT假;
/ *首先,成立了文件I / O * /的strcpy(INFILE,ARGV [1]);
的strcpy(OUTFILE,ARGV [2]);如果((fd_in =开(INFILE,0))2){
    的printf(无法打开%s \\ n,INFILE);
    出口(1);
    }如果((fd_out =开(OUTFILE,O_WRONLY | O_CREAT,0600))2){
    的printf(无法打开%s \\ n,OUTFILE);
    出口(1);
    }/ *现在插入光栅头(一个彩色光栅与1,1,1 LUT:2,2,2:等)* // *现在把这个东西了* /如果(写(fd_out,(字符*)BUF,800)!= 800){
    的printf(不能写出来的头\\ n);
    出口(1);
    }
/ *在IMG抛出了第一个512 * /如果(读(fd_in,像素,512)℃,){
    的printf(不能读%S \\ n的标题,INFILE);
    出口(1);
    }/ *现在开始在它背后拍着像素* /为(CT = 0;克拉&所述; 512;克拉++){
    如果(偶数)T_pixels =像素;
    否则T_pixels =(字符*)(安培;像素[512]);
    即使=偶数!;
    如果(读(fd_in,T_pixels,512)℃,){
        的printf(,CT不能以像素为单位,%d行\\ n读取);
        出口(1);
        }
    如果((虚设=写入(fd_out,T_pixels,512))小于0){
        的printf(文件描述符为%d,fd_out);
        的printf(错误号码为%d \\ n,错误号);
        的printf(不能写出来的像素,列%d \\ n,CT);
        的printf(虚拟价值为%d \\ n,假);
        出口(1);
        }
    }/ *现在关闭文件和整理* /
关闭(fd_in);
关闭(fd_out);} / *结束主* /


解决方案

好球员,我对这个没有解释,但至少我得到它的工作。
如果我把img2ras.c code到我的C ++ code像这个帖子的底部,并把它称为我的项目里面,一切都将会对不对?
因此,这意味着:如果我通过命令行编译的.c code我得到一个蓝色的形象,如果我编译相同code在Eclipse中我得到了黑/白的形象!
难道这已给的东西与MinGW和cygwin64?我很困惑,但在同一时间这么开心:)

 #包括LT&;&stdio.h中GT;
#包括LT&;&CONIO.H GT;
#包括LT&;&string.h中GT;
#包括LT&;&MATH.H GT;
#包括LT&;&stdlib.h中GT;
#包括LT&;&time.h中GT;/ *这个程序接受一个输入文件(这是从图像
捕获板)和一个输出文件,它必须在命令中指定
线。输出文件是Sun rasterfile。用法:img2ras capfilename rastfilename该项目是由查克·霍恩和屠杀马克霍尔库姆* /无效img_to_ras(FILE * fp_in,FILE * fp_out)
{    / ********** **********声明/    INT fd_in,fd_out;
    / * long int类型的buf [8];这是在报头中的整数* /
    静态CHAR BUF [] = {
        0x59,0xa6,的0x6A,位0x95,为0x0,为0x0,0X2,为0x0,为0x0,
        为0x0,0X2,为0x0,为0x0,为0x0,为0x0,0x8中,为0x0,为0x4,为0x0,
        为0x0,为0x0,为0x0,为0x0,为0x1,为0x0,为0x0,为0x0,为0x1,为0x0,
        为0x0,0x3中,为0x0,为0x0,为0x1,0X2,0x3中,为0x4,0x5的,为0x6,
        为0x7,0x8中,0x9,为0xA,0XB,位于0xC,0xd中,0xe,0xF的,为0x10,
        0×11,0×12,0x13,0x14的,为0x15,0x16,0x17已,为0x18,0x19符号,0X1A,
        0x1b,为0x1c,0x1d,0X1E,为0x1F,0x20的,为0x21,0x22,0x23,0X24,
        0x25,0×26,×27,0x28,0x29,0x2a,0x2B访问,0x2c,0x2d,0x2E之间,
        值为0x2F,为0x30,0X31,0x32,0x33,0x34,0x35,0x36数据,0x37符号,0x38,
        0x39,0x3a,0x3b,为0x3C,0x3D之间,0x3E的,0x​​3F的,0X40,×41,的0x42,
        0x43中,0x44进行,×45,0×46,0X47,0x48,0x49,0x4a,0x4b,0x4c,
        送出0x4d,0x4e,0x4f,为0x50,0x51,0×52,0x53,0x54,将0x55,0x56,
        的0x57,将0x58,0x59,5AH即可,0x5b,0x5c,0x5d,0x5e,0x5F的,0x60的,
        0x61,0X62,0x63,0x64,0x65,0x66,0x67,为0x68,0×69,的0x6A,
        0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72(0x73)的,0x74,
        0x75,0x76,0x77,0x78,0x79的,0x7a,0x7b,0x7c,0x7d,0x7e格式,
        到0x7f,0x80的,0x81表示,为0x82,0X83,的0x84,0x85未,0x86可以,87H的,均为0x88,
        0x89上,0x8a,0x8b,0x8c,0x8d,为0x8E,0x8f,0×90,0x91的信息,0x92,
        0x93,0x94的,位0x95,0x96,0x97,0x98在全局,0x99,0x9A执行,0x9b,为0x9c,
        0x9d,0x9e,0x9f,0XA0,0xa1,0xa2,0xA3执行,0xa4,0xA5的,0xa6,
        0xa7,0xa8,0xa9,和0xAA,是0xAB,0xac,写入0xAD,0xae,0XAF,0XB0,
        0xb1,0xb2,0xb3,0xb4,0xB5执行,0xb6,0xb7,0xb8,0xb9,0xba,
        为0xBB,0xbc,0xbd,0xbe,为0xBF,将0xC0,将0xC0,为0xC2,为0xC2,0xc4,
        0xc5,0xc6,0xc7,0xc8,0xc8,0xca,0xcb,含有0xCC,0XCD,0xce,
        0xcf,0xd0,0xd1,0xd2,0xd2,0xd4,0xd5,0xd6,0xd7,0xd8,
        0xd9,0xda,0xdb,的0xDC,0xdd,写0xDE,0xdf,0xe0的,0xe1,0xe2,
        0xe3,0xe3,为0xE5,0xe6,0xe7,0xe8,0xe9,0xea,将0xEB,将0xEB,
        0xed,0xee,0xef,0XF0,的0xf1,0xf2,0xf3,0xf3,0xf5,0xf5,
        0xf7,0xF8时,0xf9,0xFA回应,0xFB的才能,0xFB的才能,是0xFD,是0xFD,0xFF的,为0x0,
        为0x1,0X2,0x3中,为0x4,0x5的,为0x6,0x7的,0x8中,0x9,为0xA,
        0XB,位于0xC,0xd中,0xe,0xF的,为0x10,为0x11,0×12,0x13,0x14的,
        为0x15,0x16,0x17已,为0x18,0x19符号,0X1A,0x1b,为0x1c,0x1d,0X1E,
        为0x1F,0x20的,为0x21,0x22,0x23,0X24,0x25,0×26,×27,0x28,
        0x29,0x2a,0x2B访问,0x2c,0x2d,0x2E之间,值​​为0x2F,为0x30,0X31,0x32,
        0x33,0x34,0x35,0x36数据,0x37符号,0x38,0x39,0x3a,0x3b,0x3C符号,
        0x3D之间,0x3E的,0x​​3F的,0X40,×41,的0x42,0x43中,0x44进行,×45,0×46,
        0X47,0x48,0x49,0x4a,0x4b,0x4c,送出0x4d,0x4e,0x4f,为0x50,
        0x51,0×52,0x53,0x54,将0x55,0x56,的0x57,将0x58,0x59,5AH即可,
        0x5b,0x5c,0x5d,0x5e,0x5F的,0x60的,0x61,0X62,0x63,0x64,
        0x65,0x66,0x67,为0x68,0×69,的0x6A,0x6b,0x6c,0x6d,0x6e,
        0x6f,0x70,0x71,0x72(0x73)的,0x74,0x75,0x76,0x77,0x78,
        0x79的,0x7a,0x7b,0x7c,0x7d,0x7e格式,到0x7f,0x80的,0x81表示,为0x82,
        0X83,的0x84,0x85未,0x86可以,87H的,均为0x88,0x89上,0x8a,0x8b,0x8c,
        0x8d,为0x8E,0x8f,0×90,0x91的信息,0x92,0x93,0x94的,位0x95,0x96,
        0x97,0x98在全局,0x99,0x9A执行,0x9b,为0x9c,0x9d,0x9e,0x9f,0XA0,
        0xa1,0xa2,0xA3执行,0xa4,0xA5的,0xa6,0xa7,0xa8,0xa9,和0xAA,
        是0xAB,0xac,写入0xAD,0xae,0XAF,0XB0,0xb1,0xb2,0xb3,0xb4,
        0xB5执行,0xb6,0xb7,0xb8,0xb9,0xba,为0xBB,0xbc,0xbd,0xbe,
        为0xBF,将0xC0,将0xC0,为0xC2,为0xC2,0xc4,0xc5,0xc6,0xc7,0xc8,
        0xc8,0xca,0xcb,含有0xCC,0XCD,0xce,0xcf,0xd0,0xd1,0xd2,
        0xd2,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,的0xDC,
        0xdd,写0xDE,0xdf,0xe0的,0xe1,0xe2,0xe3,0xe3,为0xE5,0xe6,
        0xe7,0xe8,0xe9,0xea,将0xEB,将0xEB,0xed,0xee,0xef,0XF0,
        的0xf1,0xf2,0xf3,0xf3,0xf5,0xf5,0xf7,0xF8时,0xf9,0xFA回应,
        0xFB的才能,0xFB的才能,是0xFD,是0xFD,0xFF的,为0x0,为0x1,0X2,0x3中,为0x4,
        0x5的,为0x6,0x7的,0x8中,0x9,为0xA,0XB,位于0xC,0xd中,0xe,
        0xF的,0×10,0×11,0×12,0x13,0x14的,为0x15,0x16,0x17已,为0x18,
        的0x19,0X1A,0x1b,为0x1c,0x1d,0X1E,为0x1F,0x20的,为0x21,0x22,
        0x23,0X24,0x25,0×26,×27,0x28,0x29,0x2a,0x2B访问,0x2c,
        0x2d,0x2E之间,值​​为0x2F,为0x30,0X31,0x32,0x33,0x34,0x35,0x36数据,
        0x37符号,0x38,0x39,0x3a,0x3b,为0x3C,0x3D之间,0x3E的,0x​​3F的,0X40,
        ×41,的0x42,0x43中,0x44进行,×45,0×46,0X47,0x48,0x49,0x4a,
        0x4b,0x4c,送出0x4d,0x4e,0x4f,为0x50,0x51,0×52,0x53,0x54,
        将0x55,0x56,的0x57,将0x58,0x59,5AH即可,0x5b,0x5c,0x5d,0x5e,
        0x5F的,0x60的,0x61,0X62,0x63,0x64,0x65,0x66,0x67,为0x68,
        0×69,的0x6A,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,
        0x73,0x74,0x75,0x76,0x77,0x78,0x79的,0x7a,0x7b,0x7c,
        0x7d,0x7e格式,到0x7f,0x80的,0x81表示,为0x82,0X83,的0x84,0x85未,0x86可以,
        87H的,均为0x88,0x89上,0x8a,0x8b,0x8c,0x8d,为0x8E,0x8f,0×90,
        0x91的信息,0x92,0x93,0x94的,位0x95,0x96,0x97,0x98在全局,0x99,0x9A执行,
        0x9b,为0x9c,0x9d,0x9e,0x9f,0XA0,0xa1,0xa2,0xA3执行,0xa4,
        0xA5的,0xa6,0xa7,0xa8,0xa9,和0xAA,是0xAB,0xac,写入0xAD,0xae,
        0XAF,0XB0,0xb1,0xb2,0xb3,0xb4,0xB5执行,0xb6,0xb7,0xb8,
        0xb9,0xba,为0xBB,0xbc,0xbd,0xbe,为0xBF,将0xC0,将0xC0,为0xC2,
        为0xC2,0xc4,0xc5,0xc6,0xc7,0xc8,0xc8,0xca,0xcb,的0xCC,
        0XCD,0xce,0xcf,0xd0,0xd1,0xd2,0xd2,0xd4,0xd5,0xd6,
        0xd7,0xd8,0xd9,0xda,0xdb,的0xDC,0xdd,写0xDE,0xdf,0xe0的,
        0xe1,0xe2,0xe3,0xe3,为0xE5,0xe6,0xe7,0xe8,0xe9,0xea,
        将0xEB,将0xEB,0xed,0xee,0xef,0XF0,的0xf1,0xf2,0xf3,0xf3,
        0xf5,0xf5,0xf7,0xF8时,0xf9,0xFA回应,0xFB的才能,0xFB的才能,是0xFD,是0xFD,
        为0xFF
    };
    焦炭像素[1024]。 / *这是对于8比特像素* /
    unsigned int类型CT;    焦炭INFILE [36];
    烧焦OUTFILE [38];    字符* T_pixels; / *通过2行输入旋转* /
    诠释即使= 1;
    INT假;
// FILE * fp_out = NULL;    / *首先,成立了文件I / O * /    // strcpy_s(INFILE,ARGV [1]);
    // strcpy_s(OUTFILE,ARGV [2]);/ *#IFDEF DEBUG
    fopen_s(安培; fp_in,D:\\\\ \\\\ ComputerVision code \\\\ comb.img,RB);
    fopen_s(安培; fp_out,D:\\\\ \\\\ ComputerVision code \\\\ comb_out_testing.ras,世行);
#其他
    // fopen_s(安培; fp_in,D:\\\\ \\\\ ComputerVision code \\\\ comb_out_x.img,RB);
    fopen_s(安培; fp_in,D:\\\\ \\\\ ComputerVision code \\\\ label.img,RB);
    fopen_s(安培; fp_out,D:\\\\ \\\\ ComputerVision code \\\\ comb_out_final.ras,世行);
#万一*/    / *现在插入光栅头(一个彩色光栅与1,1,1 LUT:2,2,2:等)* /    / *现在把这个东西了* /    的fwrite(BUF,1,800,fp_out);
    / *在IMG抛出了第一个512 * /    FREAD(像素,1,512,fp_in);    / *现在开始在它背后拍着像素* /    为(CT = 0;克拉&所述; 512;克拉++){
        如果(偶数)T_pixels =像素;
        否则T_pixels =(字符*)(安培;像素[512]);
        即使=偶数!;
        FREAD(T_pixels,1,512,fp_in);
        FWRITE(T_pixels,1,512,fp_out);
    }    / *现在关闭文件和整理* /
// FCLOSE(fp_in);
// FCLOSE(fp_out);
}

I want to convert a .img File (512 Bytes header, 512x512 pixel with 8 bit per pixel (Values: 0-255)) to a .ras file. To do this I got the C code at the end of this post. The output of my test Image (test.img) should be a black/white image - so just containing values either 0 or 255. But the problem is, when I compile the C code (from the bottom) in windows, my resulting .ras file is white and a bright blue?! The curious thing is. When I compile the C code in Linux, then the result is perfectly black/white?! How can this come? In both systems I used 64 bit.

So you can try it out: 1. compile C code with: gcc -lm img2ras.c -o img2ras 2. Convert .img to .ras by console: img2ras test.img test.ras 3. Watch .ras file either in gimp, XnView or PaintshopPro

Do you have any clue how this awkward result can happen on different OS with the same Version of gcc 4.8.1?

test.img: http://www.file-upload.net/download-8629102/test.img.html

img2ras.c

/* this program accepts an input file (which comes from the image 
capturing board) and an output file, which must be specified on the command
line.  The output file is a Sun rasterfile. 

usage :  img2ras capfilename rastfilename

This program was written by Chuck Horne and butchered by Mark Holcomb*/

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>

main(argc,argv) 
    int argc;
    char *argv[];
            {

/**********declarations**********/

    int fd_in,fd_out;
/*  long int buf[8];     this is for the integers in the header*/
    static char buf[] = {
0x59, 0xa6, 0x6a, 0x95, 0x0, 0x0, 0x2, 0x0, 0x0, 
0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x4, 0x0, 
0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 
0x0, 0x3, 0x0, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 
0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 
0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 
0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 
0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 
0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 
0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 
0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 
0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 
0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 
0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 
0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 
0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 
0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 
0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 
0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 
0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 
0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 
0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc0, 0xc2, 0xc2, 0xc4, 
0xc5, 0xc6, 0xc7, 0xc8, 0xc8, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 
0xcf, 0xd0, 0xd1, 0xd2, 0xd2, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 
0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 
0xe3, 0xe3, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xeb, 
0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf3, 0xf5, 0xf5, 
0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfb, 0xfd, 0xfd, 0xff, 0x0, 
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 
0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 
0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 
0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 
0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 
0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 
0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 
0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 
0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 
0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 
0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 
0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 
0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 
0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 
0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 
0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 
0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 
0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 
0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 
0xbf, 0xc0, 0xc0, 0xc2, 0xc2, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 
0xc8, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 
0xd2, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 
0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe3, 0xe5, 0xe6, 
0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xeb, 0xed, 0xee, 0xef, 0xf0, 
0xf1, 0xf2, 0xf3, 0xf3, 0xf5, 0xf5, 0xf7, 0xf8, 0xf9, 0xfa, 
0xfb, 0xfb, 0xfd, 0xfd, 0xff, 0x0, 0x1, 0x2, 0x3, 0x4, 
0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 
0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 
0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 
0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 
0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 
0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 
0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 
0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 
0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 
0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 
0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 
0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 
0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 
0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 
0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 
0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 
0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 
0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 
0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc0, 0xc2, 
0xc2, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc8, 0xca, 0xcb, 0xcc, 
0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd2, 0xd4, 0xd5, 0xd6, 
0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 
0xe1, 0xe2, 0xe3, 0xe3, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 
0xeb, 0xeb, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf3, 
0xf5, 0xf5, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfb, 0xfd, 0xfd, 
0xff 
            };
    char pixels[1024];  /*this is for the 8-bit pixels*/
    unsigned int ct;

    char infile[36];
    char outfile[38];

    char *T_pixels; /*rotate through 2 rows of input*/
    int even=1;
    int dummy; 


/*first, set up the file i/o*/

strcpy(infile,argv[1]);
strcpy(outfile,argv[2]);

if ((fd_in=open(infile,0))<2) {
    printf("can't open %s\n",infile);
    exit(1);
    }

if ((fd_out=open(outfile,O_WRONLY|O_CREAT,0600))<2) {
    printf("can't open %s\n",outfile);
    exit(1);
    }

/*now insert the raster header (a color raster with lut of 1,1,1:2,2,2:etc) */

/* now write this stuff out */

if (write(fd_out,(char *)buf,800)!=800) {
    printf("can't write out the header\n");
    exit(1);
    }


/*have to throw out the first 512 in img*/

if (read(fd_in,pixels,512)<0)  {
    printf("can't read the header of %s\n",infile);
    exit(1);
    }

/* now start slapping the pixels in behind it */

for (ct=0;ct<512;ct++) {
    if (even) T_pixels=pixels;
    else T_pixels=(char *)(&pixels[512]);
    even=!even;
    if (read(fd_in,T_pixels,512)<0)  {
        printf("can't read in pixels, line %d\n",ct);
        exit(1);
        }
    if ((dummy=write(fd_out,T_pixels,512))<0)  {
        printf("file descriptor is %d   ",fd_out);
        printf("error number is %d\n",errno);
        printf("can't write out pixels, line %d\n",ct);
        printf("dummy value is %d\n",dummy);
        exit(1);
        }
    }

/*now close the files and tidy up*/
close(fd_in);
close(fd_out);

}  /* ends main */

解决方案

Ok guys, I have no explanation for this, but at least I got it to work. If I put the img2ras.c Code into my C++ code like at the bottom of this post and call it inside my project, everything turns out right?! So this means: If I compile the .c Code via the command line I get a blue image and if I compile the same code inside eclipse I get the black/white image! Could this has to to something with MinGW and cygwin64? I'm so confused but so happy at the same time :)!

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>

/* this program accepts an input file (which comes from the image
capturing board) and an output file, which must be specified on the command
line.  The output file is a Sun rasterfile.

usage :  img2ras capfilename rastfilename

This program was written by Chuck Horne and butchered by Mark Holcomb*/

void img_to_ras(FILE *fp_in, FILE *fp_out)
{

    /**********declarations**********/

    int fd_in, fd_out;
    /*  long int buf[8];     this is for the integers in the header*/
    static char buf[] = {
        0x59, 0xa6, 0x6a, 0x95, 0x0, 0x0, 0x2, 0x0, 0x0,
        0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x4, 0x0,
        0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0,
        0x0, 0x3, 0x0, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6,
        0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10,
        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
        0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
        0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e,
        0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
        0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42,
        0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c,
        0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
        0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
        0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a,
        0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74,
        0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e,
        0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
        0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92,
        0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c,
        0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
        0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
        0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba,
        0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc0, 0xc2, 0xc2, 0xc4,
        0xc5, 0xc6, 0xc7, 0xc8, 0xc8, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
        0xcf, 0xd0, 0xd1, 0xd2, 0xd2, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
        0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2,
        0xe3, 0xe3, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xeb,
        0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf3, 0xf5, 0xf5,
        0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfb, 0xfd, 0xfd, 0xff, 0x0,
        0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa,
        0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14,
        0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,
        0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
        0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32,
        0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
        0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,
        0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
        0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
        0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64,
        0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e,
        0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
        0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82,
        0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c,
        0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
        0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0,
        0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
        0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
        0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe,
        0xbf, 0xc0, 0xc0, 0xc2, 0xc2, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
        0xc8, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2,
        0xd2, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc,
        0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe3, 0xe5, 0xe6,
        0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xeb, 0xed, 0xee, 0xef, 0xf0,
        0xf1, 0xf2, 0xf3, 0xf3, 0xf5, 0xf5, 0xf7, 0xf8, 0xf9, 0xfa,
        0xfb, 0xfb, 0xfd, 0xfd, 0xff, 0x0, 0x1, 0x2, 0x3, 0x4,
        0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe,
        0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
        0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
        0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c,
        0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
        0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
        0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
        0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54,
        0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e,
        0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
        0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72,
        0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c,
        0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
        0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90,
        0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a,
        0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4,
        0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae,
        0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
        0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc0, 0xc2,
        0xc2, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc8, 0xca, 0xcb, 0xcc,
        0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd2, 0xd4, 0xd5, 0xd6,
        0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
        0xe1, 0xe2, 0xe3, 0xe3, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
        0xeb, 0xeb, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf3,
        0xf5, 0xf5, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfb, 0xfd, 0xfd,
        0xff
    };
    char pixels[1024];  /*this is for the 8-bit pixels*/
    unsigned int ct;

    char infile[36];
    char outfile[38];

    char *T_pixels; /*rotate through 2 rows of input*/
    int even = 1;
    int dummy;
//  FILE* fp_out = NULL;

    /*first, set up the file i/o*/

    //strcpy_s(infile, argv[1]);
    //strcpy_s(outfile, argv[2]);

/*#ifdef DEBUG
    fopen_s(&fp_in, "D:\\ComputerVision\\code\\comb.img", "rb");
    fopen_s(&fp_out, "D:\\ComputerVision\\code\\comb_out_testing.ras", "wb");
#else
    //fopen_s(&fp_in, "D:\\ComputerVision\\code\\comb_out_x.img", "rb");
    fopen_s(&fp_in, "D:\\ComputerVision\\code\\label.img", "rb");
    fopen_s(&fp_out, "D:\\ComputerVision\\code\\comb_out_final.ras", "wb");
#endif*/



    /*now insert the raster header (a color raster with lut of 1,1,1:2,2,2:etc) */

    /* now write this stuff out */

    fwrite(buf, 1, 800, fp_out);


    /*have to throw out the first 512 in img*/

    fread(pixels, 1, 512, fp_in);

    /* now start slapping the pixels in behind it */

    for (ct = 0; ct<512; ct++) {
        if (even) T_pixels = pixels;
        else T_pixels = (char *) (&pixels[512]);
        even = !even;
        fread(T_pixels, 1, 512, fp_in);
        fwrite(T_pixels, 1, 512, fp_out);
    }

    /*now close the files and tidy up*/
//  fclose(fp_in);
//  fclose(fp_out);
}

这篇关于灰度图像转换为.IMG .ras - 在Linux中的灰度在Windows白色和蓝色的? C的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆