Falls GDI+ zur Verfügung steht, geht das relativ einfach.
Hier eine Beispiel-Konsolenanwendung:
// GDI+
#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment( lib, "gdiplus.lib" )
// für cout
#include <iostream>
using namespace std;
int main()
{
// GDI+ initialisieren
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
// Scopeklammern, damit alle Objekte vor GdiPlusShutdown zerstört sind
{
Bitmap bm1( L"C:\\kk.gif" );
Bitmap bm2( L"C:\\kk2.gif" );
if( bm1.GetWidth() != bm2.GetWidth() || bm1.GetHeight() != bm2.GetHeight() ) {
// Unterschiedliche Abmessungen
cout << "Die Bilder haben unterschiedliche Abmessungen." << endl;
cout << "Es wurde kein Vergleich durchgeführt." << endl;
}
else {
int nDifferentPixels = 0;
Color color1, color2;
for( int x=0; x<bm1.GetWidth(); ++x ) {
for( int y=0; y<bm1.GetHeight(); ++y ) {
if( Ok == bm1.GetPixel( x,y, &color1 ) && Ok == bm2.GetPixel( x,y, &color2 ) ) {
if( color1.GetValue() != color2.GetValue() ) {
++nDifferentPixels;
}
}
}
}
cout << "Unterschiedliche Pixel: " << nDifferentPixels << endl;
}
}
GdiplusShutdown(gdiplusToken);
return 0;
}
[/CODE]