non-desktrutive Bildmanipulationen
-
Wie programmiert man solch non-desktrutive Bildmanipulationen wie Photoshop sie macht? Also man hat da die verschiedensten Einstellungs- und Effektebenen aber nichts ist dort in Stein gemeißelt, denn man kann jederzeit die Einstellunge auch im Nachhinein noch ändern.
-
Das Originalbild wird im Hintergrund im Hauptspeicher gespeichert. Die Effekte werden auf das Bild angewandt. Daraus entsteht dann ein neues Bild, was auch nur im Hauptspeicher liegt. Dieses zweite daraus erstellte Bild wird dann angezeigt. Oder man wendet den nächsten Effekt dann wieder auf das zweite Bild an und zeigt dann erst das 3. Bild an. Das ganze ist halt wie eine Kette. Auf das Originalbild wird nur lesend zugegriffen.
-
@Unknown34b
Naja... was genau ist die Frage?
Guck dir die Layer an wie du sie im Photoshop hast. Im Prinzip sieht die Struktur die du im Speicher aufbaust genau so aus.Statt das Originalbild wegzuwerfen oder "in place" zu modifizieren baust du also erstmal eine beschreibende Struktur auf was der User denn gerne machen möchte. Und dann berechnest du anhand dieser Strukturen (also Ausgangsbild + Effektlayer + was du halt alles an "nicht-destruktiven" Operationen unterstützt) das Ausgabebild. Zusätzlich. Und zeigst es an.
Und jedes mal wenn der User an den Einstellungen 'was ändert berechnest du das Ausgabebild neu. Im einfachsten Fall ganz von vorne, bzw. wenn du es etwas optimieren willst kannst du auf jeder Ebene das Zwischenergebnis im Speicher halten. Dann musst du, wenn an der letzten Ebene Parameter geändert werden, auch nur die letzte Ebene neu berechnen.
-
Es gibt da einen Vortrag von Adobe auf einer letzten Going Native oder CppCon oder so. Da behandeln die deren spatial undo oder so. Findet sich bestimmt auf Youtube oder Channel9