Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PNG Transparenz ohne Transparenzfarbe (https://www.delphipraxis.net/185938-png-transparenz-ohne-transparenzfarbe.html)

Satyr 20. Jul 2015 13:10

PNG Transparenz ohne Transparenzfarbe
 
Huhu,

ich hoffe ich bin im richtigen Unterforum.
Was ich machen wollte ist eigentlich recht simpel, dachte ich. Ich lade mehrere kleine PNG Icons in TImages. Danach wollte ich diese mit SaveToFile (woanders) speichern.
Das Problem ist, die Transparenz um das Icon wird nicht erkannt. Vermutlich weil das Icon weiss ist und die Transparenz... keine Ahnung. Ich gucke mir das Icon in Photoshop an und da ist eben transparenz, um das weisse Icon. Beim laden wird das so angezeigt wie es soll. Aber speichern kann ich es nicht. Dabei wird das, was transparent sein soll, immer schwarz.

Picture.Bitmap.TransparentColor := clNone;
sowie
Picture.Bitmap.TransparentColor := clBlack;
oder
Picture.Bitmap.TransparentMode := true;

ändern leider nichts an dem Problem.

Wie kann ich das png einfach abspeichern wie es geladen wurde?

rwalper 20. Jul 2015 13:38

AW: PNG Transparenz ohne Transparenzfarbe
 
Hi,

gehe ich Recht in der Vermutung, dass Du auf dem Formular in der TImage-Komponente die Transparenz korrekt siehst?
Wenn ja, probiere einfach mal bitte
Delphi-Quellcode:
Image.Picture.SaveToFile('C:\temp\Test.ico'
und vermeide alle Zugriffe auf Picture.Bitmap...

Satyr 20. Jul 2015 13:44

AW: PNG Transparenz ohne Transparenzfarbe
 
Ja, auf dem Formular sehe ich das korrekt. Also VOR dem speichern.
Leider ändert sich nichts, wenn ich so abspeichere.

rwalper 20. Jul 2015 16:02

AW: PNG Transparenz ohne Transparenzfarbe
 
Bei mir funktioniert das, allerdings mit XE8:
Delphi-Quellcode:
var
procedure SavePng(Image1: TImage);
var
  Png: TPngImage;
begin
  // Speichern
  Png := TPngImage.CreateBlank( COLOR_PALETTE, 8, 32, 32);
  try
    Png.Canvas.Draw(0, 0, Image1.Picture.Graphic );
    Image1.Picture.SaveToFile( 'C:\Temp\Test1.png' );
  finally
    Png.Free;
  end;
end;

Satyr 20. Jul 2015 16:34

AW: PNG Transparenz ohne Transparenzfarbe
 
Ja, mit Konvertierung geht es bei mir (XE5) auch halbwegs. Nicht alle transparenten Bereiche werden erkannt, leider. Das sieht an manchen Kanten dann recht ausgefranst aus. Ich dachte eigentlich das in einer XE Variante TImage standardmäßig PNG speichern kann, so wie ja auch laden geht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 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