Zum Inhalt springen

farbinformation eines pixels


ComputNik

Empfohlene Beiträge

hallo,

ist es möglich in einem consolenprogramm die farbinformation eines bestimmten pixels auszulesen ( *bmp && win98/2000)

MSDN:

grafik/multimedia - GDI - windows GDI - Bitmaps - bitmap reference

Von Windows Programmierung hab ich jetzt nicht so den Plan.

Da weis ich nicht ob die sachen loadbitmap() und getpixel() funktionieren.

giebt es darüber tutorials? bei google hab ich nichts gefunden

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sicher geht das. LoadBitmap und GetPixel sind soweit auch schon richtig, du brauchst dazwischen aber noch einen Gerätekontext (DC), in den du die geladene Bitmap reinmalst, bevor du dann die Pixeldaten aus dem DC holen kannst.

Wenn du es dir ganz einfach machen willst, dein Programm auch mit anderen Bitmapdateiformaten (gif, jpg) funktionieren soll, und es dich nicht stört, eine Bibliothek zusammen mit deinem Programm auszuliefern, kannst du aber auch GDI+ verwenden.

Hier hatten wir schon mal ein Beispiel dafür.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hol die den handle des console-fensters und erzeuge dir einen komptaiblem memory-dc zum dc des handles console windows. erzeuge ein bitmap derselben größe wie das window und kopiere das window in das bitmap. dann kannst du mit getpixel darauf zugreifen.

du kannst auch versuchen, direkt auf den dc des handles zugreifen

schau dir diese funcs an:

GetDC

CreateCompatibleDC

BitBlt

SelectObject

GetClientRect

CreateBitmap

MfG, Michael

Link zu diesem Kommentar
Auf anderen Seiten teilen

GDI+ ist AFAIK bei Windows XP enthalten. Für Windows NT4 SP6, Windows 2000, 98 und ME kann man es hier bekommen: http://www.microsoft.com/downloads/release.asp?releaseid=32738

Hab mir das Beispiel angeschau nur habe ich diese gdiplus.h nicht.

Auch nirgends gefunden oder so.

Und das was man sich da runterladen kann das ist eine *.dll und keiiiine *.h

Ach ja ich arbeite zur zeit ausweishalber auf einem W98 System.

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 5 Wochen später...

Moin,

Ich muß noch mal nachfragen, die sache funzt noch nicht so richtig!

also ich hab das jetzt mit MFC dialog gemacht.

void CDialogBitmapDlg::OnPaint() 
{
CClientDC dc( this );
BITMAP bm;
Bild1.GetObject( sizeof( bm ), &bm );

CDC SpeicherDC;
SpeicherDC.CreateCompatibleDC( &dc );

SpeicherDC.SelectObject( &Bild1 );
CRect Rect;
GetClientRect( &Rect );
dc.SetStretchBltMode( HALFTONE );
dc.StretchBlt( 0, 0, Rect.right, Rect.bottom, &SpeicherDC,
0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY );

FILE *datei;
char*datei1={"c:\\color.txt"};
datei=fopen(datei1, "w");

if(datei==0)
{
//MessageBox("Fehler","Fehler");
}

fprintf(datei, "Farbwert:\n");
fprintf(datei, "%X", dc.GetPixel(5, 5));

fclose(datei);

CDialog::OnPaint();
} [/PHP]

----------------------------------------------------------------------------------------

ich will also die farbinformation in eine Datei schreiben.

Das Bild wird angezeigt, keine fehler keine warnungen.

GetPixel führt er aus und schreibt auch in die datei, nur nicht so richtig das was ich will!

Pixel 1x1 ist bei mir ROT in datei steht %X == FF | %d == 255

=> das ist soweit richtig.

aber 20x20 ist grün und da schreibt er auch 255 dez.

Ich möchte am ende den HTML Hex farbcode haben um ihn in eine html seite reinzuschreiben.

Link zu diesem Kommentar
Auf anderen Seiten teilen



COLORREF cr = dc.GetPixel(48,48);
DWORD colorHtml = (( cr & 0xff0000 ) >> 16) | (( cr & 0xff ) << 16) | ( cr & 0xff00 );

fprintf(datei, "Farbwert:\n");
fprintf(datei, "%X", colorHtml);

fclose(datei);
[/PHP]

:confused: so richtig funzt das nicht ist im prinzip das gleiche ergebnis wie vorhin.

originalfarbe ist blau und ergebnis im HTML ist grau

Link zu diesem Kommentar
Auf anderen Seiten teilen

:uli

Danke an alle!

nochmal das gesammelte werk:


FILE *datei;
char*datei1={"c:\\color.txt"};
datei=fopen(datei1, "w");

if(datei==0)
{
MessageBox("Fehler","Fehler");
}

COLORREF cr = dc.GetPixel(0,0);
DWORD colorHtml = (( cr & 0xff0000 ) >> 16) | (( cr & 0xff ) << 16) | ( cr & 0xff00 );

fprintf(datei, "Farbwert:\n");
fprintf(datei, "%06X", colorHtml);

fclose(datei);
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...