AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GDI+ GDIPOBJ PNG Farbraum

Ein Thema von Gruber_Hans_12345 · begonnen am 4. Aug 2020 · letzter Beitrag vom 4. Aug 2020
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

GDI+ GDIPOBJ PNG Farbraum

  Alt 4. Aug 2020, 10:44
Hallo, ich habe ein kleines Problem mit PNG die ich mit Delphi und GDI+ (GDIPOBJ) zeichnen lassen möchte und zwar zeigt er mir in dem gezeichneten Bild kein weiss an, sondern ändert die Farbe in ein sehr helles grau.

mein simplester Code
Delphi-Quellcode:
procedure TForm27.Button3Click(Sender: TObject);
var
    FStream : TMemoryStream;
    SA : TStreamAdapter;
    FImage : TGPImage;
    Graphs : TGPGraphics;
begin
    FStream := TMemoryStream.Create;
    FStream.LoadFromFile('d:\test.png');
    FStream.Position := 0;
    SA := TStreamAdapter.Create(FStream, soReference);
    FImage := TGPImage.Create(SA, TRUE);
    //FImage := TGPImage.Create(SA, FALSE);
    PAintBox1.Canvas.Brush.Color := clWhite;
    PAintBox1.Canvas.FillREct(REct(0,0,200,200));
    Graphs := TGPGraphics.Create(PaintBox1.Canvas.Handle);
    Graphs.DrawImage(fImage, 10, 10);
    Graphs.Free;
    fImage.Free;
    fStream.Free;
end;
Ich vermute das er irgendwie irgendwo einen Farbraum definiton oder co hat, aber egal wie ich das PNG abspeichere das graue statt weiss bleibt.

Hat noch wer Tipps was ich da testen kann?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: GDI+ GDIPOBJ PNG Farbraum

  Alt 4. Aug 2020, 12:38
FImage := TGPImage.Create(SA, TRUE);
Macht TGPImage.Create(SA, Bool(True)); einen Unterschied?#

//edit
vielleicht stimmt auch das pixelformat von source und target nicht überein?
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 4. Aug 2020 um 12:45 Uhr)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#3

AW: GDI+ GDIPOBJ PNG Farbraum

  Alt 4. Aug 2020, 12:57
also das BOOL(TRUE) macht keinen unterschied...

wie kann ich das mit dem Pixelformat prüfen?

beim TGPImage kann ich mir das Pixelformat ja ansehen aber beim TGPGraphics finde ich da nichts dazu
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#4

AW: GDI+ GDIPOBJ PNG Farbraum

  Alt 4. Aug 2020, 13:06
was allerdings auch komisch ist wenn ich mir mit
Delphi-Quellcode:
    memo1.Lines.Add('FImage.PixelFormat : '+IntToStr(FImage.GetPixelFormat));
    Graphs.DrawImage(fImage, 10, 10);
das PixelFormat ausgeben lasse, dann wird das Bild NICHT gezeichnet

mit
Delphi-Quellcode:
        Graphs.DrawImage(fImage, 10, 10);
memo1.Lines.Add('FImage.PixelFormat : '+IntToStr(FImage.GetPixelFormat));
funktioniert es ganz normal
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: GDI+ GDIPOBJ PNG Farbraum

  Alt 4. Aug 2020, 13:29
Vielleicht kannst Du Dir das eine oder andere aus diesem Thema abschauen.
Der Quelltext dort samt erster Lösung schaut für mich gut nachvollziehbar aus, Schwerpunkt "Alpha-Kanal" (was bei Dir wahrscheinlich nicht klappt momentan)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#6

AW: GDI+ GDIPOBJ PNG Farbraum

  Alt 4. Aug 2020, 13:34
werde ich mir anschauen, aber mein PNG ist eigentlich nur TrueColor OHNE Alpha Kanal das ist ja das komische
sobald ich das PNG als Palette mit 256 Farben speicher dann passt es.

[edit]
leider hats nicht geholfen, da wie gesagt es kein Problem mit dem Alphakanal ist sondern mit der Farbe weiss bzw mit hellen Farben.
Der Pixelformat vom TGPImage ist auf jeden Fall PixelFormat32bppARGB, aber verfälschen tut er mir die Farbe $ffffff
Gruss Hans

2B or not 2B, that is FF

Geändert von Gruber_Hans_12345 ( 4. Aug 2020 um 14:16 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:29 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