*.bmp verkleinern unter VC++ 6

Hallo,

ich möchte ein kleines Programm schreiben, dass ein Bild (bmp) öffnet, aus diesem einen bestimmten Bereich „herausschneidet“ und über das alte Bild drüber speichert - also z.B. aus einem Bild mit 768 x 576 Pixeln einen Streifen mit 30 x 768 Pixeln ab dem 200. Pixel von den 576 Pixeln.

Ein solches Verfahren würde mir eine Menge Speicher sparen, welcher hier an der Uni leider sehr rar ist (bei Betrachtung von ~1000 Bildern je Versuch).

Für eure Hilfe wäre ich euch ausgesprochen dankbar. Bitte beachtet jedoch, dass ich kein Informatiker bin :smile:

Denis

Hallo!

Ich würde die CImage Klasse der MFC/ATL bemühen.
Da kannst du das geladene BMP auch gleich als JPG speichern, wenn der Platz so knapp ist!

Der Include und der typeDef gehören ins stdafx.h:
#include

typedef struct ssBGR {
unsigned char b;
unsigned char g;
unsigned char r;
// unsigned char pad;
} sBGR;

typedef sBGR *pBGR;

hier der code:
//load the image from file
CImage img;
img.Load(fileName);

//get some data we need…
int pitch=img.GetPitch()*-1;
int height=img.GetHeight();
int width=img.GetWidth();
sBGR* pPixel;
char* pBitmap=(char*)img.GetBits()-pitch*(height-1);

//overwrite some pixels
int x=0,y=10;
while(xr=0;
pPixel->g=0;
pPixel->b=0;
x++;
}

//save the image back to disk
img.Save(„new.JPG“);
img.Detach();
img.Destroy();

Gruß Pauli!

Hallo Pauli,

vielen Dank für deinen Rat.
Leider meint VC++, dass es die atlimage.h nicht kennt. Wenn ich die stdafx.h weg lasse, bzw. das include darin weg lasse, meint VC++, es kenne CImage nicht. *grrr*

In *.jpg möchte ich die Bilder nicht speichern, da ich sie unkomprimiert benötige.

Denis

… vielleicht hätte ich noch dazu sagen sollen, dass mir eine einfache Konsolenanwendung genügt …