#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<cmath>
int Convert(char *input, char *output)
{
int h,v;
unsigned char * buff_in;
unsigned char * buff_out;
FILE* in = fopen( input, "rw+" );
if ( in == NULL ) {
printf("open file %s failed\n", input);
return -1;
}
FILE* out = fopen( output, "w+" );
if ( in == NULL ) {
printf("open file %s failed\n", output);
return -1;
}
buff_in = (unsigned char *)malloc(1824*944*1.5);
buff_out = (unsigned char *)malloc(1824*944*3);
fread(buff_in, 1824*944*1.5 ,1 ,in);
for(v=0;v<472;v++){
for(h=0;h<912;h++){
buff_out[ v*2*1824*3+3*2*h +1] = buff_in[1824*944+v*1824+2*h];
buff_out[ v*2*1824*3+3*2*h+3+1] = buff_in[1824*944+v*1824+2*h];
buff_out[1824*3+v*2*1824*3+3*2*h +1] = buff_in[1824*944+v*1824+2*h];
buff_out[1824*3+v*2*1824*3+3*2*h+3+1] = buff_in[1824*944+v*1824+2*h];
buff_out[ v*2*1824*3+3*2*h +2] = buff_in[1824*944+v*1824+2*h+1];
buff_out[ v*2*1824*3+3*2*h+3+2] = buff_in[1824*944+v*1824+2*h+1];
buff_out[1824*3+v*2*1824*3+3*2*h +2] = buff_in[1824*944+v*1824+2*h+1];
buff_out[1824*3+v*2*1824*3+3*2*h+3+2] = buff_in[1824*944+v*1824+2*h+1];
}
}
for(v=0;v<944;v++){
for(h=0;h<1824;h++){
buff_out[v*1824*3+3*h] = buff_in[v*1824+h];
}
}
fwrite(buff_out, 1824*944, 3, out);
fclose(in);
fclose(out);
free(buff_in);
free(buff_out);
return 0;
}
int main(int argc, char **argv)
{
if(argc < 2)
printf("please input read file\n");
char *input_name = argv[1];
printf("input file name:%s \n", input_name);
char *output_name = argv[2];
printf("output file name:%s \n", output_name);
int ret = Convert(input_name, output_name);
if(ret < 0)
printf("convert failed!\n");
return 0;
}