#include #include #include #include using namespace std; #pragma pack(2) typedef struct { char signature[2]; unsigned int fileSize; unsigned int reserved; unsigned int offset; unsigned int headerSize; unsigned int width; unsigned int height; unsigned short planeCount; unsigned short bitDepth; unsigned int compression; unsigned int compressedImageSize; unsigned int horizontalResolution; unsigned int verticalResolution; unsigned int numColors; unsigned int importantColors; } BmpHeader; typedef struct { unsigned char blue; unsigned char green; unsigned char red; //unsigned char reserved; Removed for convenience in fread; info.bitDepth/8 doesn't seem to work for some reason } Rgb; int main( int argc, char **argv,unsigned char *rgb ) { FILE *inFile; BmpHeader header; inFile = fopen( "b.bmp", "rb" ); if( !inFile ) { printf( "Error opening file %s.\n", argv[1] ); return -1; } if( fread(&header, 1, sizeof(BmpHeader), inFile) != sizeof(BmpHeader) ) { printf( "Error reading bmp header.\n" ); return -1; } FILE *outFile = fopen( "bb.bmp", "wb" ); if( !outFile ) { printf( "Error opening outputfile.\n" ); return -1; } fwrite(&header.signature, 2, 1, outFile); fwrite(&header.fileSize, 4, 1, outFile); fwrite(&header.reserved, 4, 1, outFile); fwrite(&header.offset, 4, 1, outFile); fwrite(&header.headerSize, 4, 1, outFile); fwrite(&header.width, 4, 1, outFile); fwrite(&header.height, 4, 1, outFile); fwrite(&header.planeCount, 2, 1, outFile); fwrite(&header.bitDepth, 2, 1, outFile); fwrite(&header.compression, 4, 1, outFile); fwrite(&header.compressedImageSize, 4, 1, outFile); fwrite(&header.horizontalResolution, 4, 1, outFile); fwrite(&header.verticalResolution, 4, 1, outFile); fwrite(&header.numColors, 4, 1, outFile); fwrite(&header.importantColors, 4, 1, outFile); Rgb *pixel = (Rgb*) malloc( sizeof(Rgb) ); // Не получается обрезать изображение по вертикали меняя параметры здесь. Я туплю! помогите. for( int j=0; j