Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   JPGs bearbeiten? (https://www.delphipraxis.net/201797-jpgs-bearbeiten.html)

MicMic 27. Aug 2019 13:51

JPGs bearbeiten?
 
Hallo,
wenn ich ein Delphi Programm schreiben wollte, mit dem ich JPG-Bilder bearbeiten kann (Farben ändern, malen etc.) komme ich nur auf die Idee, in Canvas herum zu zeichnen. Also JPG in ein Bitmap konvertieren, die nötigen Funktionen nutzen und vor dem Speichern alles wieder zurück in JPG. Wie machen es denn eigentlich die großen wie Photoshop usw. ? Eine 100 MB JPG Datei in Bitmap umzuwandeln um damit dann zu arbeiten (malen, zeichnen, Farbverläufe etc.) ist sicherlich ein ganz falscher Weg.

Gruß
Mike

hhcm 27. Aug 2019 13:56

AW: JPGs bearbeiten?
 
Hi,

ich weiß, das beantwortet deine Frage nicht, aber ich nutze - ImageEn - wenn ich Bilder in Delphi bearbeiten will.
Trotzdem denke ich, dass irgendwie alles beim Canvas anfängt.

hoika 27. Aug 2019 14:03

AW: JPGs bearbeiten?
 
Hallo,
Zitat:

Wie machen es denn eigentlich die großen wie Photoshop usw. ?
Die schauen sich die jeweiligen Spezifikationen an, formen es intern in ein Bitmap um
und schreiben den betreffenden Code dazu.

Jasocul 27. Aug 2019 14:07

AW: JPGs bearbeiten?
 
Zitat:

Zitat von hoika (Beitrag 1443497)
Hallo,
Zitat:

Wie machen es denn eigentlich die großen wie Photoshop usw. ?
Die schauen sich die jeweiligen Spezifikationen an und schreiben den betreffenden Code dazu.

YMMD :lol:
Wenn du wissen willst, wie es die "Großen" machen, kannst du dir ja mal Gimp ansehen. Das ist Open-Source.

TiGü 27. Aug 2019 14:10

AW: JPGs bearbeiten?
 
Was sind das wieder für nichtssagende Antworten!^^

Du kannst dich bspw. bei zwei großen einfach umgucken.
GIMP hat ein GitHub-Repository:
https://github.com/GNOME/gimp

Und paint.net ist eine unobfuskierte .NET-Anwendung die z.B. mit ILSpy dekompilieren kannst.

Rollo62 27. Aug 2019 14:58

AW: JPGs bearbeiten?
 
Ist zwar C++, aber vielleicht hilft Dir das weiter.

Medium 27. Aug 2019 15:13

AW: JPGs bearbeiten?
 
Auch die großen müssen Bilder in eine Bitmap-Form bringen, um sie auf Pixel-Ebene verändern zu können. Technisch nicht anders möglich, und gerade bei jpegs auch mathematisch nicht wirklich. Nur wenige sind an die Arbeit mit Bildern, die das RAM sprengen würden, überhaupt angepasst, und auch dies ist meines Wissens nach auch nichts anderes als kleine Versionen für verschiedenen Zoom-Stufen zu errechnen (und Mal-Operationen auf die Originaldaten zu mappen), und/oder partielles Laden um nur die anzuzeigenden Bereiche im Speicher zu haben. Die Details sind natürlich um ein Vielfaches komplexer und variieren je nach Programm.

Aber um ein Bild beliebig bearbeitbar zu haben, MUSS man die Pixeldaten haben, was einem Bitmap gleichzusetzen ist egal wie man es am Ende nennt.

Rollo62 27. Aug 2019 15:41

AW: JPGs bearbeiten?
 
Ja richtig, zumal JPG nicht verlustfrei ist und Kompression und Filter enthält.
Ausserdem kann das JPG Dateiformat Alles mögliche enthalten (Thumb, mehrere Bilder, Zustatzdaten, etc.).

gubbe 27. Aug 2019 16:39

AW: JPGs bearbeiten?
 
Zitat:

Zitat von MicMic (Beitrag 1443494)
Hallo,
wenn ich ein Delphi Programm schreiben wollte, mit dem ich JPG-Bilder bearbeiten kann (Farben ändern, malen etc.) komme ich nur auf die Idee, in Canvas herum zu zeichnen. Also JPG in ein Bitmap konvertieren, die nötigen Funktionen nutzen und vor dem Speichern alles wieder zurück in JPG. Wie machen es denn eigentlich die großen wie Photoshop usw. ? Eine 100 MB JPG Datei in Bitmap umzuwandeln um damit dann zu arbeiten (malen, zeichnen, Farbverläufe etc.) ist sicherlich ein ganz falscher Weg.

Gruß
Mike

Doch, genau das ist der Weg. Es gibt nur ein paar Dinge, die man mit JPGs verlustfrei machen kann, drehen zum Beispiel. Für's reinzeichnen muss man es erst in ein Bitmap umwandeln und dann erneut komprimieren mit dem entsprechenden Qualitätsverlust bei jedem erneuten Speichern. Deshalb speichert man mit den "großen" Programmen ja auch lieber ein verlustfreies Format, wenn man die Bilder später nochmal weiterbearbeiten möchte.

JanWe 28. Aug 2019 12:02

AW: JPGs bearbeiten?
 
früher (vor 20 Jahren) gab es mal ein Programm namens eclipse°), das glaub ich so 4000 DM gekostet hat, mit dem man große Bilddateien (BMP, TIFF .psd) auf den damals leistungsstarken 200 MHz/500 MB RAM Rechnern laden und bearbeiten konnte,
indem man mit einem Vorschaufenster/navigator verschoben und einfach nur gerade die Teile bearbeitet hatte, die notwendig waren. Der Rest wurde dann auf wieder zusammen die Platte geschrieben.

Zwei Jahre später hatte sich Adobe für Photoshop die Technik abgeschaut (eingekauft?)

Bei JPEGs reicht es ja auch, nur Teile der Datei in die Bitmaps zu laden und zu bearbeiten. Speichern - indem man die Bereiche komprimiert zurückspeichert. Zum Schluß gegebenenfalls das Thumbnail aktualisieren/anpassen. Fertig.

°= nein, nicht die Java-IDE

dummzeuch 28. Aug 2019 15:54

AW: JPGs bearbeiten?
 
Für die meisten Operationen muss man die JPEGs decoden, verändern und wieder encoden. Das Problem dabei ist, dass die Bildqualität darunter leidet. Nach ein paar (zig) Durchgängen wird das sichtbar.

Es gibt allerdings Möglichkeiten, das auf das Minimum zu Reduzieren.

Einige Bibliotheken z.B. erlauben es JPEGs oben und unten abzuschneiden ohne sie zu de- und encodieren.

Wenn ich das recht in Erinnerung habe, erlaubt es das Dateiformat sogar, nur einzelne Bereiche zu decodieren, zu verändern und wieder zu encodieren, den Rest des Bildes dabei aber unverändert zu lassen.
Das bezieht sich immer auf 8x8 Pixel-Quadrate. (Wie schon geschrieben: Wenn ich mich recht erinnere, es ist schon wieder eine Weile her, dass ich mich damit beschäftigt habe.)

Die Algorithmen dafür sind allerdings alles andere als einfach verständlich.

Medium 28. Aug 2019 16:33

AW: JPGs bearbeiten?
 
Zitat:

Zitat von dummzeuch (Beitrag 1443712)
8x8 Pixel-Quadrate

Das kommt auch noch ein wenig auf das Color-Subsampling an. Meistens sind jpegs im 4:2:2 Format, also Farben nur mit halber Auflösung. Dann sind's 16x16 Quadrate. Es gibt aber auch 4:4:4 und 4:1:1. Die Reihenfolge der Matrizen kann glaube ich auch variieren, und man kann durch den Standard definierte Quantisierungs-Matrizen nehmen oder frei welche in der Datei. Die Huffman-Codierung ist glaube ich ähnlich: Es gibt fertige Tabellen, man kann aber auch selbst ran und es mit zum Bild bei legen. Der Standard ist mittlerweile dermaßen flexibel (und das Verfahren mathematisch auch nicht ganz trivial), dass händisch in den Rohdaten wühlen nichts für mal eben in ner Woche runter geschrieben mehr ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 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