Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
Delphi 11 Alexandria
|
AW: VCL-Bitmap Resampler
24. Apr 2023, 12:22
Hab inzwischen einige Verbesserungen in https://github.com/rmesch/Repository-R.Schaaf eingebaut:
- Threads werden nicht mehr automatisch in Initialization erzeugt. Man kann InitDefaultResamplingThreads aufrufen, um sie zu initialisieren, bevor man sie benutzt, oder sie werden initialisiert beim ersten Aufruf einer parallelen Routine, was dann eine Verzögerung erzeugt. FinalizeDefaultResamplingThreads gibt sie frei. Wenn man das vergisst, werden sie in Finalization freigegeben.
- Übergebene Bitmaps mit Alphaformat=afDefined werden jetzt korrekt skaliert, und das Ergebnis hat das gleiche Alphaformat. Der Resampler funktioniert aber am besten mit Alphaformat=afIgnored. Man sollte Alphaformat nur setzen, bevor man eine Bitmap anzeigt, um Ungenauigkeiten zu vermeiden.
- Die Unit uTools enthält Routinen zum Umwandeln von TPngImage oder TWICImage auf TBitmap, ohne dass Alphaformat=afDefined gesetzt wird, was TBitmap.Assign in VCL.Graphics immer tut (, und was Zeitverschwendung für .jpg ist). Ein TWICImage dekodiert .jpg, .png oder .tif sehr schnell. Leider ist TWICImage.Create nicht threadsafe, also muss man es im Haupt-Thread erzeugen.
- Es gibt einen neuen TAlphaCombineMode amTransparentColor, welcher die transparente Farbe und die transparenten Regionen beim Skalieren erhält.
- Die Demo ThreadsInThreads macht jetzt Vorschaubilder in 2 gleichzeitigen Threads, das sollte ein guter Crashtest dafür sein, ob's denn auch threadsafe ist.
- Code in uScale.pas wurde etwas aufgeräumt, Interface enthält jetzt nur noch das, was Benutzer wissen müssen, und mehr Kommentare wurden hinzugefügt. Außerdem habe ich 4 fast identische Routinen in eine überführt. Das kostet ein bisschen Performance, aber ich war es einfach leid.
Kritik usw. erwünscht!
Renate
Renate
|
|
Zitat
|