AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bitmap: falsche Farben

Bitmap: falsche Farben

Ein Thema von Sko · begonnen am 19. Nov 2006 · letzter Beitrag vom 3. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#1

Bitmap: falsche Farben

  Alt 19. Nov 2006, 09:01
Hallo,

ich hab mit meinem JPG-Kompressor mal meinen Guild Wars-Screenshotordner geöffnet. Dieses Spiel speichert Screenshots als Bitmap. Die Bitmaps werden aber in falschen Farben angezeigt. Andere Bitmaps (z.B. von Paint) werden aber richtig angezeigt.
Wenn ich diese Guild-Wars-Bitmaps mit einem anderen Grafikprogramm öffne werden sie auch richtig angezeigt, daher denke ich das der Fehler in meinem Programm liegt.
Die Bitmaps werden in normale Images und in Image32 geladen, daher kanns imho nicht an der Image-Komponente liegen.
Im Anhang mal 2 Bilder - richtig und falsch.

Ich hoffe ihr könnt mir helfen.
Miniaturansicht angehängter Grafiken
gw245_falsch_110.jpg   gw245_richtig_714.jpg  
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Bitmap: falsche Farben

  Alt 19. Nov 2006, 10:05
sieht aus als wären sie in einem Druckformat (nicht rgb).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: Bitmap: falsche Farben

  Alt 19. Nov 2006, 10:07
Hi,
die Farben sind vertauscht (ok, dass siehst du ja). Du musst hier von deiner RGB Belegung in eine BRG Belegung umwandeln, dann sieht wieder alles richtig aus. Warum der das falsch macht weiß ich nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Bitmap: falsche Farben

  Alt 19. Nov 2006, 13:58
Zitat von Der_Unwissende:
Hi,
die Farben sind vertauscht (ok, dass siehst du ja). Du musst hier von deiner RGB Belegung in eine BRG Belegung umwandeln, dann sieht wieder alles richtig aus. Warum der das falsch macht weiß ich nicht.
Ja, das hab ich gesehen, das Problem ist jetzt, wie soll ich erkennen ob ein Bild nun RGB, BRG oder sonstwas ist?

[Edit]Ich bin bis Mittwoch weg und weis nicht ob ich da Internet hab, nicht wundern wenn ich nicht gleich antworte[/Edit]
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Bitmap: falsche Farben

  Alt 21. Nov 2006, 10:30
*push*
hat keiner ne lösung?
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Bitmap: falsche Farben

  Alt 21. Nov 2006, 10:33
Kannst du das Bild von dem der Screenshot stammt mal hier anhängen? Dann würd ich mal in den Jpg-Header schauen.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Bitmap: falsche Farben

  Alt 21. Nov 2006, 11:37
das Original ist ein Bitmap, ich werds zuhause mal packen und hochladen
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Bitmap: falsche Farben

  Alt 21. Nov 2006, 18:02
So, hier ist das Originalbild, ist leider trotz Packen etwas groß.
Angehängte Dateien
Dateityp: zip gw245_162.zip (1,38 MB, 9x aufgerufen)
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Bitmap: falsche Farben

  Alt 21. Nov 2006, 22:21
Ich hab mir mal dein Bitmap angeschaut und die Header sind eigentlich korrekt und auch die Farbwerte sind richtig abgespeichert in RGB, aber Delphi beachtet offenbar nicht die bfOffBits im TBitmapFileHeader. Denn zwischen dem TBitmapInfoHeader und den Farbdaten liegen bei deinem Bitmap noch 2 leere Bytes. Diese 2 Byte liest Delphi als Farbdaten ein, wodurch der fehler entsteht.

Du hast jetzt mehrere möglichkeiten: Du schreibst dir eine eigene Prozedur zum einlesen des Bitmaps oder du änderst die Bitmaps indem du die 2 leeren Bytes entfernst bevor sie in Delphi eingelesen werden. Die 2te möglichkeit (das entfernen der leeren Bytes) habe ich mal übernommen, hier der Code:
Delphi-Quellcode:
procedure BitmapVerify(FileName: TFileName);
var
  fs: TFileStream;
  fh: TBitmapFileHeader;
  ih: TBitmapInfoHeader;
  Offset: DWORD;
  Buffer: Pointer;
begin
  fs:=TFileStream.Create(FileName, fmOpenReadWrite);
  try
    fs.Position:=0;
    fs.ReadBuffer(fh, SizeOf(fh));
    fs.ReadBuffer(ih, SizeOf(ih));
    Offset:=fh.bfOffBits-(SizeOf(TBitmapFileHeader)+SizeOf(TBitmapInfoHeader));
    if Offset>0 then begin
      GetMem(Buffer, ih.biSizeImage);
      try
        fs.Position:=fh.bfOffBits;
        fs.ReadBuffer(Buffer^, ih.biSizeImage);
        fh.bfSize:=fh.bfSize-Offset;
        fh.bfOffBits:=fh.bfOffBits-Offset;
        fs.Position:=0;
        fs.WriteBuffer(fh, SizeOf(fh));
        fs.Position:=fh.bfOffBits;
        fs.WriteBuffer(Buffer^, ih.biSizeImage);
        fs.Size:=fh.bfSize;
      finally
        FreeMem(Buffer, ih.biSizeImage);
      end;
    end;
  finally
    fs.Free;
  end;
end;
mfg
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Bitmap: falsche Farben

  Alt 21. Nov 2006, 22:34
Wow, vielen Dank, funktioniert super *freu*
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz