Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TBitmap32 SaveToFile PNG...Wie? (https://www.delphipraxis.net/103188-tbitmap32-savetofile-png-wie.html)

torud 12. Nov 2007 07:16


TBitmap32 SaveToFile PNG...Wie?
 
Hallo Wissende,

folgender Code schlägt leider aufgrund Inkompatibilität fehl. Wie muss ich´s machen, damit es funzt, samt Transparenz?

Delphi-Quellcode:
var
  myPng : TPngObject;
begin
  myPng := TPNGObject.Create;
  myPng.Assign(img_btn_design.Bitmap);
  myPng.SaveToFile(App_Pfad + 'sample.png');
  myPng.Free;
end;
Dem Bitmap32 wurde vorher ein PNG mit Transparenzen übergeben. Anschliessend wurde auf dem Bitmap Text gerendert und nun soll das Bitmap wieder als transparentes PNG gespeichert werden. Benutzt wurden die GraficEx-Komponenten...

Tipps, Hinweise?

cruiser 12. Nov 2007 07:30

Re: TBitmap32 SaveToFile PNG...Wie?
 
GraphicEx hat nur eine mangelhafte PNG-Unterstützung...

steht auch im Graphics32 FAQ

PNGdelphi sollte bessere Ergebnisse bringen...

Meine Favoriten sind aber immer noch die PNG Components.

torud 12. Nov 2007 08:05

Re: TBitmap32 SaveToFile PNG...Wie?
 
So gayts auch, wobei ich da noch nicht gecheckt habe, ob die Transparenzen erhalten bleiben...

Delphi-Quellcode:
var
  myPng : TPngObject;
  myBmp : TBitmap;
begin
  myPng := TPNGObject.Create;
  myBmp := TBitmap.Create;

  myBmp.Assign(img_btn_design.Bitmap);
  myPng.Assign(myBmp);
  myPng.SaveToFile(App_Pfad + 'sample.png');
  myPng.Free;
  myBmp.Free;
end;

xZise 20. Jan 2008 10:55

Re: TBitmap32 SaveToFile PNG...Wie?
 
Auch wenn das etwas her ist, aber folgendermaßen funktioniert es leider nicht:
Delphi-Quellcode:
function SaveBitmap32ToPNGFile(AFileName: string; srcbmp32: TBitmap32): bool;
var
  PNG: TPNGObject;
begin
  Result := FALSE;

  PNG := TPNGObject.Create;
  try
    PNG.Assign(srcbmp32);
    PNG.SaveToFile(AFileName);
  finally
    PNG.Free;
  end;
end;
Ergebnis:
Zitat:

---------------------------
Timetaptop
---------------------------
TBitmap32 kann nicht zu TPNGObject zugewiesen werden.
---------------------------
OK
---------------------------
MfG
xZise

himitsu 19. Jan 2016 15:00

AW: TBitmap32 SaveToFile PNG...Wie?
 
Zitat:

Delphi-Quellcode:
PNG.Assign(srcbmp32);

Dafür müsste TPNGObject den Typ TBitmap32 kennen, was eine vollkommen schwachsinnige Abhängigkeit ergäbe,
damit das TPNGObject den Inhalt von TBitmap32 übernehmen könnte.

Fazit: Nicht Assign/AssignTo, sondern die Größe des PNG festlegen und dann auf dessen Canvas das Bitmap drauf malen.

Alternativ: TBitmap32 kennt TPNGObject und hat eine entsprechende Übergabefunktion implementiert. (ebenfalls eine blöde Abhängigkeit)
dann
Delphi-Quellcode:
srcbmp32.AssignTo(PNG);

Sir Rufo 19. Jan 2016 17:22

AW: TBitmap32 SaveToFile PNG...Wie?
 
Zitat:

Zitat von himitsu (Beitrag 1327495)
Delphi-Quellcode:
srcbmp32.AssignTo(PNG);

Eine
Delphi-Quellcode:
protected
Methode kann man aber nicht so ohne Weiteres verwenden :stupid:

Und wenn
Delphi-Quellcode:
TBitmap32
das
Delphi-Quellcode:
TPngObject
bekannt ist, dann macht man trotzdem
Delphi-Quellcode:
PNG.Assign( srcbmp32 );
. Genau für dieses Szenario gibt es eben
Delphi-Quellcode:
Assign
und
Delphi-Quellcode:
AssignTo
. :wink:

bernau 19. Jan 2016 19:49

AW: TBitmap32 SaveToFile PNG...Wie?
 
Der Thread ist 8 Jahre alt. Rekord?

Sir Rufo 19. Jan 2016 21:10

AW: TBitmap32 SaveToFile PNG...Wie?
 
Zitat:

Zitat von bernau (Beitrag 1327527)
Der Thread ist 8 Jahre alt. Rekord?

Nein, war passiv aktiv => http://www.delphipraxis.net/1327482-post13.html :stupid:

bytecook 20. Jan 2016 08:27

AW: TBitmap32 SaveToFile PNG...Wie?
 
Zitat:

Zitat von himitsu (Beitrag 1327495)
Zitat:

Delphi-Quellcode:
PNG.Assign(srcbmp32);

Dafür müsste TPNGObject den Typ TBitmap32 kennen, was eine vollkommen schwachsinnige Abhängigkeit ergäbe,
damit das TPNGObject den Inhalt von TBitmap32 übernehmen könnte.

Fazit: Nicht Assign/AssignTo, sondern die Größe des PNG festlegen und dann auf dessen Canvas das Bitmap drauf malen.

Alternativ: TBitmap32 kennt TPNGObject und hat eine entsprechende Übergabefunktion implementiert. (ebenfalls eine blöde Abhängigkeit)
dann
Delphi-Quellcode:
srcbmp32.AssignTo(PNG);

Richtig, das Graphics32 Framework unterstützt bewusst keine Lade- / Speicherroutinen, abgesehen vom Bitmap Format. Lade- sowie Speicherfunktionen gibt es allerdings in Drittunits,
teilweise auch von Mitautoren / Verwaltern wie Christian (cwbudde). Anbei der Link zu seinem GR32_Png Library: http://sourceforge.net/projects/gr32pnglibrary/

Gruß,

Peter


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