[gelöst] Wieviel Image/Bild verträgt eine Anwendung?

Für Fragen von Einsteigern und Programmieranfängern...
Erwin
Beiträge: 285
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von Erwin »

Erwin hat geschrieben:
Do 5. Okt 2023, 18:26
Und noch etwas, was ich nicht so schön finde: Die Anwendung wurde mehr als Doppelt so groß als die Bilder eigentlich Platz brauchten. So ca. 2,5 mal. Naja, diesen Abstrich muss ich dann halt hinnehmen.
Da habe ich glatt was wieder vergessen: Es mit Bildern, die im vornherein drin sind, zu testen. Also wenn alle direkt im Image sind, oder nur als Ressourcen, dann ist der Unterschied gerade mal 80 Byte mehr. Also Pro Ressourcen-Datei 20 Byte. In so fern also ein Tolle Sache mit der Ressource. Vielen Dank.

Hm... interessant: Also scheinen die PNG auch in der Anwendung selbst wiederum nicht Komprimiert zu sein? Einfache Rechnung nach dem Motto: Bild ist 1 MB groß, Anwendung wird dadurch auch 1 MB groß, geht also nicht auf. Anderseits geht auch die Rechnung x*y (z.B. 500*500 Pixel (*2?)) auch nicht auf. Sondern bei meinen Test sind es dennoch mind. 50 %, oder gar bis 75 % weniger MB, als es bei x*y (*2) Berechnung der Fall sein sollte. ?
Lazarus 2.2.0 / FP 3.2.4

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6175
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von af0815 »

Erwin hat geschrieben:
Do 5. Okt 2023, 18:26
Manches kann man damit eben nicht machen, oder nur auf extrem Komplizierte Umwege. Da fühle ich mich mit einer Programmiersprache doch freier im Handeln. Damit kann ich mir teils meine eigene Engine basteln.
Nur nebenbei, die Castle Game Engine ist in (free-)Pascal kompatibel geschrieben. Und du darfst sie dir selbst kompilieren, nachdem die Open Source ist.

Aber vielleicht ist bei dir, der Weg das Ziel :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4848
Registriert: Fr 8. Apr 2011, 09:01

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von wp_xyz »

Erwin hat geschrieben:
Do 5. Okt 2023, 19:35
x*y (z.B. 500*500 Pixel (*2?)
Wieso mal 2? Eine png-Datei hat einen Alpha-Kanal und wird daher in der Regel mit 32 Bit pro Pixel geladen, als 4 Byte.

Erwin
Beiträge: 285
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von Erwin »

af0815 hat geschrieben:
Do 5. Okt 2023, 20:30
Nur nebenbei, die Castle Game Engine ist in (free-)Pascal kompatibel geschrieben. Und du darfst sie dir selbst kompilieren, nachdem die Open Source ist.

Aber vielleicht ist bei dir, der Weg das Ziel :-)
So weit hatte ich gar nicht gedacht, dass ich ja die Engine sogar bis in den Code-Hinein meinen Bedürfnissen anpassen könnte.

Aber das mit Weg trifft auch teils zu: Fühle mich wohler, wenn ich den Weg sozusagen selber gehe. Bessere Übersicht und so. Und auch muss ich mir nicht so sehr Gedanken darüber mache, ob eine Veränderung im Code der Engine nicht noch andere Auswirkungen haben könnte, als die gewollte. Reicht schon, dass ich manchmal bei meinen eigenen Code (Prozeduren) nicht durchblicke ... .
wp_xyz hat geschrieben:
Do 5. Okt 2023, 22:04
Erwin hat geschrieben:
Do 5. Okt 2023, 19:35
x*y (z.B. 500*500 Pixel (*2?)
Wieso mal 2? Eine png-Datei hat einen Alpha-Kanal und wird daher in der Regel mit 32 Bit pro Pixel geladen, als 4 Byte.
4 Bit pro Pixel im Ausgepacktem Zustand? Oha. Dachte PNG-Bilder wären bei 16-Bit stehen geblieben, trotz Alpha. In dem Fall, ja mal 4. Dann wird das Ganze doch auch Anderseits Viel gepackt in der fertigen (bzw. inaktiven) Anwendung untergebracht. Finde ich dann teils rätselhaft. Eigenes Packsystem? Zuerst wird das von PNG ausgepackt, um dann selbst (mit eigenen) wieder zusammen zu packen?
Lazarus 2.2.0 / FP 3.2.4

wp_xyz
Beiträge: 4848
Registriert: Fr 8. Apr 2011, 09:01

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von wp_xyz »

Erwin hat geschrieben:
Fr 6. Okt 2023, 12:18
Eigenes Packsystem? Zuerst wird das von PNG ausgepackt, um dann selbst (mit eigenen) wieder zusammen zu packen?
Was meinst du? "Eigenes" Packsystem? Und wieso wieder zusammenpacken?

Die Resource enthält die Original-Datei mit ein paar Bytes Header für die Resource-Verwaltung. Wenn dein Programm die Resource-Datei (oder genauso eine reale Plattendatei) in eine TPortableNetworkGraphic-Instanz einliest, wird die PNG-Datei ausgepackt (der Code dazu gehört zum PNG-Standard und ist in der FPC-Unit fpreadpng enthalten). Dabei wird eine Matrix von Breite mal Höhe Pixeln gefüllt und während der "Lebenszeit" der PNG-Instanz beibehalten, so dass dein Programm jederzeit auf die Pixel zugreifen kann, ohne nochmals etwas zeitaufwending entpacken zu müssen. Während dieser Zeit nimmt der Speicherbedarf des Programm dann um die Anzahl der Pixel (Höhe * Breite) mal Anzahl der Bytes pro Pixel (PixelFormat = pf32Bit in der Regel = 4 Bytes) zu. Wenn du später das Bild nicht mehr brauchst, wird der Speicher für die Pixel-Matrix wieder freigegeben.

Erwin
Beiträge: 285
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von Erwin »

wp_xyz hat geschrieben:
Fr 6. Okt 2023, 13:18
Was meinst du? "Eigenes" Packsystem? Und wieso wieder zusammenpacken?
Die Anwendung selbst, also im Ruhe Zustand, wächst um ca. 2,5 Fache dessen, was die Bilddateien groß waren. Also ohne Bilder X. Mit Bilder ist die Anwendung dann um X + Y(Bilder) * 2,5 groß. Aber wenn die Bilder ausgepackt wären, müsste die (inaktive) Anwendung um noch weit aus mehr wachsen, als nur um + Y *2,5 Fache? Da ist es doch teils offensichtlich, dass es in keinster Weise (weder von PNG selbst gepackt oder eben nicht gepackt) 1:1 in der Anwendung landet. Den Unterschied kann ich mir an ehesten dadurch erklären, dass es ausgepackt und wieder (mit mehr Platzbedarf) auf eigene weise von Lazaraus/FP zusammen gepackt wird.
Lazarus 2.2.0 / FP 3.2.4

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2629
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von m.fuchs »

Erwin hat geschrieben:
Fr 6. Okt 2023, 16:27
Die Anwendung selbst, also im Ruhe Zustand, wächst um ca. 2,5 Fache dessen, was die Bilddateien groß waren. Also ohne Bilder X. Mit Bilder ist die Anwendung dann um X + Y(Bilder) * 2,5 groß.
Kann ich nicht bestätigen:

leere Anwendung unter Linux kompiliert: 6,3 MiB
ein JPEG mit 3,1 MiB als Ressource hinzugefügt und kompiliert: 9,4 MiB

Das passt schon.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Erwin
Beiträge: 285
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Wieviel Image/Bild verträgt eine Anwendung?

Beitrag von Erwin »

m.fuchs hat geschrieben:
Fr 6. Okt 2023, 16:53
Kann ich nicht bestätigen:

leere Anwendung unter Linux kompiliert: 6,3 MiB
ein JPEG mit 3,1 MiB als Ressource hinzugefügt und kompiliert: 9,4 MiB

Das passt schon.
Interessant. In dem Fall passt es natürlich. Hm... vielleicht waren meine Bilder auch zu klein. Bei 3,1 MB ist ja noch Platz für bis zu 20 KB (* 4, weil 4 Bilder in meinen Fall, für irgendwas anderes in dem Zusammenhang) die dann unter gehen. 4x20 (also max 80) deshalb, weil bei meinen Test zu den 50 KB noch weitere 75 KB dazu kamen. Außerdem ... 6,3? Meine ist ca. 26 MiB groß (leer). Vielleicht spielt auch die Einstellungen mit eine Rolle, was da alles mit kompiliert werden soll.
Lazarus 2.2.0 / FP 3.2.4

Antworten