Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   PNG und Canvas via BMP und anderes (https://www.delphipraxis.net/214944-png-und-canvas-via-bmp-und-anderes.html)

Michael II 15. Apr 2024 11:39

AW: PNG und Canvas via BMP und anderes
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo creehawk,

hier noch ein Beispiel, wie du mit TWICImage eine png Datei laden und als png, bmp, gif, tiff, jpeg abspeichern kannst. Weiter: ...wie du eine .png Datei in eine Bitmap laden kannst ...wie du bei gegebenem .png File einen Teil rauskopieren (dein Problem) und den kopierten Teil als .png abspeichern kannst. ...wie du eine ARGB Bitmap inklusive Transparenz abspeichern kannst.

Redeemer 18. Apr 2024 18:32

AW: PNG und Canvas via BMP und anderes
 
Zitat:

Zitat von Michael II (Beitrag 1535750)
WICImage wurde hier erwähnt. Ich sehe nicht, wie dies beim Bearbeiten von ARGB Bildern helfen kann. Fürs Laden und Speichern ist es aber echt cool.
Weiss hier jemand wie man mit Delphis VCL TWICImage eine ARGB Bitmap als .BMP speichern kann (Bitmap als .PNG speichern funktioniert problemlos und ist sicher in den allermeisten Fällen eh sinnvoller)? Damit der korrekte ARGB BMP Header geschrieben wird müsste man für .BMP via IWICBitmapFrameEncode, IPropertyBag2 EnableV5Header32bppBGRA=1 setzen - wenn jemand Code hat, dann gern ;-).
(Mich interessiert hier nur TWICImage; dass es durch direktes Schreiben des BMP Headers gut geht, weiss ich.)

Also ich krieg TWICImage nicht dazu, BGRA-Bitmaps zu laden. Also laden schon, nur ohne Alpha. Egal ob per Bitfields oder implizit. Ich nutze daher PNG.

Michael II 27. Apr 2024 21:01

AW: PNG und Canvas via BMP und anderes
 
Zitat:

Zitat von Redeemer (Beitrag 1535924)
Also ich krieg TWICImage nicht dazu, BGRA-Bitmaps zu laden. Also laden schon, nur ohne Alpha. Egal ob per Bitfields oder implizit. Ich nutze daher PNG.

In den meisten Fällen wird man wohl eh als PNG speichern und von PNG laden wollen (File kleiner und Decodieren/Encodieren heute extrem schnell).

Ich kann aber mit WICImage (ohne irgendwas anzupassen) in Delphi 11.2 problemlos ARGB Bitmaps laden. Alphakanal ist mit dabei. Welche Delphi Version verwendest du?
Leider fügt Delphi beim Speichern von ARGBs mit TWICImage nicht automatisch den boolean Variant EnableV5Header32bppBGRA=1/TRUE hinzu und speichert deshalb nur RGB. Deshalb noch einmal meine Frage: Weiss jemand wie man gewünschte Eigenschaften in den Bag einpackt?

Beim Speichern von ARGB Bitmaps schreibt man TBitmapFileHeader, TBitmapV5Header, Bilddaten selbst und gut ist.

TomyN 1. Mai 2024 19:39

AW: PNG und Canvas via BMP und anderes
 
Meiner Erfahrung nach macht GdiPlus beim Laden/Speichern verschiedenster Formate einen guten Job.

Redeemer 2. Mai 2024 15:38

AW: PNG und Canvas via BMP und anderes
 
Zitat:

Zitat von Michael II (Beitrag 1536192)
Zitat:

Zitat von Redeemer (Beitrag 1535924)
Also ich krieg TWICImage nicht dazu, BGRA-Bitmaps zu laden. Also laden schon, nur ohne Alpha. Egal ob per Bitfields oder implizit. Ich nutze daher PNG.

In den meisten Fällen wird man wohl eh als PNG speichern und von PNG laden wollen (File kleiner und Decodieren/Encodieren heute extrem schnell).

Ich kann aber mit WICImage (ohne irgendwas anzupassen) in Delphi 11.2 problemlos ARGB Bitmaps laden. Alphakanal ist mit dabei. Welche Delphi Version verwendest du?

11.3 Community. Es geht um die Darstellung in TImage.

Michael II 2. Mai 2024 17:12

AW: PNG und Canvas via BMP und anderes
 
Zitat:

Zitat von Redeemer (Beitrag 1536306)
11.3 Community. Es geht um die Darstellung in TImage.

Ich wähle Datei > Neu > VCL, ergänze meine Form durch ein TImage und einen Button und schreibe diesen Code:

Delphi-Quellcode:
procedure LoadPicFromFile( pic : TGraphic; fn :string );
// lädt .bmp .png .tif .gif .jpg Bilddaten aus der Datei fn in pic
var wicpic : TWICImage;
begin
  wicpic := TWICImage.Create;
 try
  wicpic.LoadFromFile( fn );
  pic.Assign( wicpic );
 finally
  wicpic.Free;
 end;
end;

procedure TForm117.Button1Click(Sender: TObject);
var bmp : TBitMap;
begin
   bmp := TBitMap.Create;
  try
   LoadPicFromFile( bmp, 'C:\Users\micha\Desktop\sf_MEL.bmp' );
   image1.Picture.Graphic := bmp;
  finally
   bmp.Free;
  end;
end;
Lädt bei mir in 11.2 eine Bitmap mit Alphakanal in ein Image - bei dir nicht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Seite 3 von 3     123   

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