AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte VCL-Bitmap Resampler
Thema durchsuchen
Ansicht
Themen-Optionen

VCL-Bitmap Resampler

Ein Thema von Renate Schaaf · begonnen am 16. Apr 2023 · letzter Beitrag vom 5. Mai 2023
Antwort Antwort
Seite 1 von 2  1 2      
Renate Schaaf
Registriert seit: 25. Jun 2020
Nachdem mein Bitmap-Resampler im englischen Forum per Diskussion einige Verbesserungen erfahren hat, hab ich ihn mal auf GITHub hochgeladen.

https://github.com/rmesch/Repository-R.Schaaf

2 kleine Demos sind enthalten, sowie eine Doc, die erklärt wie das Skalieren von Bitmaps mit Filtern (Box, Bilinear, Bicubic, Lanczos) funktioniert.

Besonderheiten:
  1. Enthält eine parallele Routine, die die Skalierungszeit auf meinem System auf ca. 1/5 reduziert. Damit sind Zoom-Pans in Echtzeit möglich.
  2. Jeder Filter hat einen Default-Radius, der den gängigen Werten entspricht (z.B. wie Graphics32), aber der Radius kann beliebig verändert werden.
  3. Das Rechteck für den Bereich, der skaliert werden soll, hat Float-Werte für bessere Zooms.

Funktioniert für pf32Bit-Bitmaps. Es gibt Optionen für die Behandlung des Alpha-channels (ignorieren, unabhängig, vor-multiplizieren). Andere Filter können sehr einfach hinzugefügt werden. Unterstützt derzeit Delphi 10.x und höher.

Renate
 
TurboMagic

 
Delphi 12 Athens
 
#2
  Alt 16. Apr 2023, 20:38
Super!
Falls du denkst, das wäre auch sinnvoll per GetIt "auslieferbar" (dann bekommt es noch mehr
Aufmerksammkeit), kann ich dir gerne zeigen wie das geht.
  Mit Zitat antworten Zitat
Renate Schaaf

 
Delphi 11 Alexandria
 
#3
  Alt 16. Apr 2023, 22:08
Hi Turbomagic,

Danke!

Zitat:
Falls du denkst, das wäre auch sinnvoll per GetIt "auslieferbar"
Ich denke schon, wenn ich gefunden habe, wie man die globalen Variablen für die Threads loswird, ohne dass die Performance in den Keller geht.
Im Moment warte ich darauf, von irgendwem dafür ausgeschimpft zu werden.

..jetzt ist mir doch grad ne Idee dazu gekommen.

Renate
Renate

Geändert von Renate Schaaf (16. Apr 2023 um 22:11 Uhr)
  Mit Zitat antworten Zitat
Renate Schaaf

 
Delphi 11 Alexandria
 
#4
  Alt 19. Apr 2023, 15:17
Der parallele Resampler kann jetzt in mehreren gleichzeitig laufenden Threads benutzt werden. Man kann nun mehr als einen thread-pool erstellen und der parallelen Routine sagen, welchen sie benutzen soll.
Ich hab eine Demo "ThreadsInThreads" hinzugefügt, mit der man das austesten kann. Ist ein einfacher Thumbnail-Explorer. Gestern hing dieser sich noch machmal auf, wenn man das Verzeichnis zu schnell gewechselt hat, aber ich hoffe, dass das jetzt behoben ist.
Wäre sehr dankbar für eine Rückmeldung, wenn es immer noch passiert.

https://github.com/rmesch/Repository-R.Schaaf

Cheers,

Renate
Renate
  Mit Zitat antworten Zitat
Renate Schaaf

 
Delphi 11 Alexandria
 
#5
  Alt 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
  Mit Zitat antworten Zitat
Rollo62

 
Delphi 12 Athens
 
#6
  Alt 25. Apr 2023, 09:30
Kritik ?
Ich wüsste nicht warum

Vielen Dank dafür.
  Mit Zitat antworten Zitat
Renate Schaaf

 
Delphi 11 Alexandria
 
#7
  Alt 25. Apr 2023, 10:21
Kritik ?
Ich wüsste nicht warum
Renate =
Renate
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

 
Delphi 10.3 Rio
 
#8
  Alt 25. Apr 2023, 13:27
Jetzt sehe ich hier schon das zweite Bildverarbeitungs Tool von Dir und habe noch immer TBitmaps2Video auf meiner Todoliste.

Ich könnte beides sicher gut gebrauchen ...

Leute aus der Foto- und Video-graphie Ecke kennen sicherlich LR-Timelapse. Was leider an eine bestimmte Software genagelt ist (die mir in diesem Leben sicher nicht mehr auf den Rechner kommt)
Das Tool wird verwendet um bei einer Sequenz von Bildern dafür zu sorgen das beim Durchblättern der Bilder der Helligkeits- und Farbverlauf fließend ist. Es also nicht flackert.

Ich hatte angefangen sowas mit Lazarus(ich brauche 64 Bit und Massen von Speicher für tausende Bilder) selber zu schreiben.
Bitmap, also RGB, ist zwar ungeeignet für die nötigen Farbmanipulationen aber mit HSV geht das ganz gut.

Danach könnte dann TBitmaps2Video ans Werk gehen und könnte aus tausenden einzelnen Bildern ein Video erstellen ohne das ich noch eine andere Software brauche.

Aktuell geht es aber einfach nicht forwärts. Nach der Arbeit ist die Lust was zu programmieren bei Null.
Stefan
  Mit Zitat antworten Zitat
Renate Schaaf

 
Delphi 11 Alexandria
 
#9
  Alt 25. Apr 2023, 14:43
LR-Timelapse.
Kenn ich nicht, guck ich mir mal an.
An TBitmap2Video ärgert mich nur, dass die Binaries und die Headers für ffMpeg inzwischen sehr alt sind. Funktionieren meiner Meinung nach gut, aber sieht doof aus.

Ich bin Rentnerin und habe im Moment total Bock auf Programmieren, und Tools zu schreiben finde ich im Moment viel befriedigender als an meiner End-Anwendung zu arbeiten. Wenn ich mir angucke, über welche Hürden man jetzt springen muss, um so ein Teil zertifiziert zu kriegen, obwohl es umsonst ist, habe ich schon gar keine Lust mehr.
Renate
  Mit Zitat antworten Zitat
TurboMagic

 
Delphi 12 Athens
 
#10
  Alt 25. Apr 2023, 19:26
Was wäre das für eine End-Anwendung? Was für eine Zertifizierung?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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