![]() |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Zitat:
Aber man kann auch TPicture direkt verwenden. Bei dem registrieren sich standardmäßig alle TGraphic-Klassen mit ihren Dateiendungen. Picture.LoadFromStream geht da leider nicht, da diese Delphi-Klassen ausschließlich auf die Dateiendung achten, welche es beim Stream nicht gibt. Picture.LoadFromFile nimmt dann anhand der Dateiendung eine der registrierten TGraphic, erstellt davon eine Instanz in Picture.Graphic und läd da rein dann das Bild. |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Zitat:
|
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Mit TWICImage geht es durchaus schnell und zuverlässig! (Oben habe ich den Code mit Edit nachgetragen um nicht Antworten zu spammen).
Nur wie verkleinere ich die Bilder? Wie gesagt, der verlinkte Code erfordert Units, die ich nicht habe... Edit: Danke @bytecook für den Code, aber ich lade explizit nicht über die TPortableNetworksGraphic32, weil die Dateien ja auch was anderes als .png sein können. Kann natürlich sein, dass die wegen Vererbung von TBitmap32 auch JPEG etc. lädt, aber naja... Natürlich ist TPicture stilvoller als TImage, mal schauen, was im fertigen Code übrigbleibt. :) |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Ich kenn das TWICImage nicht..
Aber wenn das auf GDI+ basiert könnte das verkleinern mit DrawImageRectRectI funktionieren. gruss |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Zitat:
Aber: Hier schon mal nachgesehen? ![]() Imho solltest du ganz einfach die Textur laden können, da png unterstützt wird. Ansonsten mal im DGL Forum Bergmann89 fragen, der gited ja die TGlBitmap... |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Die Unit winapi.wincodec gibt es unter D2010 noch nicht? :shock:
Eventuell ohne Namespace...oder nur winapi. Sherlock |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Leider verfügt weder TWicImage nach TPNGImage (als "Mittelsmann"), noch TPortableNetworkGraphic32 über einen Canvas, auf den ich mit Stretchdraw zeichen könnte. :shock:
> Ich kenn das TWICImage nicht.. Der Aussage kam nicht von mir, ich kann es ja problemlos benutzen. Auf glBitmap soll das ganze ja letztendlich drauf. Leider _muss_ ich die Graphiken bearbeiten (verkleinern) bevor ich sie an glBitmap übergebe. Und je nach Dateiformat kann es mit glBitmap zu gewaltigen Problemen kommen, deshalb bin _ich_ für eine gültige Graphik zuständig und muss diese sicherstellen. Edit: Es gibt tatsächlich die WinCodec Unit, damit geht das Resize (hatte versucht "WindowsCodec" wie in der Hilfe beschrieben zu verwenden). Jetzt muss ich den Code nur noch für Breite und Höhe anpassen:
Delphi-Quellcode:
procedure ResizeImage(aWICImage: TWICImage; NewWidth:Integer; NewHeight: Integer);
var scale: IWICBitmapScaler; wicBitmap: IWICBitmap; begin if Assigned(aWICImage) then begin aWICImage.ImagingFactory.CreateBitmapScaler( scale); scale.Initialize(aWICImage.Handle, NewWidth, NewHeight, WICBitmapInterpolationModeFant); aWICImage.ImagingFactory.CreateBitmapFromSourceRect(scale, 0,0,NewWidth, NewHeight, wicBitmap); if Assigned(wicBitmap) then aWICImage.Handle := wicBitmap; end; end; |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Liegt im XE in der Graphics.pas und Wincodec.pas
Einen HDC finde ich auch nicht, wo man ein TCanvas dran hängen könnte. |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Ich verstehe das Problem jetzt nicht.
Du lädst eine Grafik (Bild) über TWicImage. Danach konvertierst du dieses in eine Texture ? Dann sollte doch nach einem glBindTexture über Quader diese sich verkleinern lassen. Oder sehe ich da was falsch? gruss |
AW: Bilder [mit/ohne Transparenz] in universelles Format bringen
Zitat:
1) Bild via LoadPng it ein TBitmap32 laden. 2) Bild auf gewünschte Größe resamplen. (Am besten je nach Geschmack/Quali mit einem Lanczos Resampler). Die meisten Lowlevel-Routinen in Gr32 sind SSE2 optimiert, also seeeehr schnell... 3) Verkleinertes Bild auf GlBitmap via Scanline übertragen. (Siehe ![]() oder ... 3b) eine Titan X kaufen :P Raster Resampling Infos: ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz