Forum

Einloggen | Registrieren | RSS  

hab dich nicht so... (Elektronik)

verfasst von bastelix(R), 31.12.2017, 01:21 Uhr

» Gäbe es hierfür nicht eine Möglichkeit, dass die Forumsoftware die
» Bildgröße automatisch anpasst?
Technisch ist das möglich, die triviale Lösung lässt sich sogar relativ schnell implementieren.

Dann sind wir auch schon beim großen ABER ;-) Vorab möchte ich darauf hinweisen, dass es sich hier um ein komplexes Thema handelt und ich nicht zu sehr ins Detail gehe und einige Aspekte weglasse um den Post im Umfang etwas zu begrenzen.

Hier im Forum gibt es zwei Arten von Bildern: Fotos und Screenshots (dazu zählen ich der Einfachheit halber auch Schaltpläne etc.) die sich aus Bildverarbeitungs-Sicht stark unterscheiden.

Ein Foto hat i.d.R. wenige/keine scharfen Kanten, etliche Farbverläufe und viele Farben. Dafür eignet sich JPEG (*.jpg/*.jpeg) als Dateiformat am besten. JPEG ist ein verlustbehaftetes Kompressionsformat und berechnet (vereinfacht gesagt) den Mittelwert von NxN Pixel großen Blöcken im Bild und speichert nur den Mittelwert. Dadurch gehen Informationen im Bild verloren, die dir als Betrachter aber bei geeigneter Kompressionsstufe gar nicht auffallen. Wird die Kompressionsstufe zu stark gewählt und/oder wird ein Screenshot komprimiert dann fällt das auf; die bekannten JPEG-Artefakte und verwaschene Kanten bei Schrift oder Leiterbahnen zum Beispiel.

Screenshots haben i.d.R. nur scharfe Kanten, keine Farbverläufe und relativ wenig Farben. Dafür eignet sich das alte und einstmals patentgeschützte GIF oder das freie und etwas jüngere PNG (ausgesprochen PING) im Paletten-Modus. Hier basiert die Kompression darauf, dass jedes Pixel einen Farbwert aus der Palette hat, die Palette umfasst bei GIF 255 Farben, bei PNG ist die Palette dynamisch aber im Idealfall auch nicht größer als 255 Farben. Damit lässt sich ein geeignetes Bild in GIF und PNG verlustfrei speichern, da das Bild ja nicht mehr Farben enthält als in der Palette vorhanden sind. Es gibt keine Artefakte, verwaschene Kanten oder unleserliche Schrift und das bei recht kleinen Dateigrößen. Wenn du aber ein Foto als GIF oder PNG (im Palettenmodus) speicherst kann man darauf kaum noch etwas erkennen (weil nicht mehr Farben erlaubt sind als in der Palette vorhanden, alle anderen Farben werden einfach durch eine Farbe aus der Palette ersetzt).

Um einen guten Automatismus zu implementieren müsste zunächst mal die Art des hochgeladenen Bildes erkannt werden und dann der geeignete Algorithmus zum skalieren und komprimieren gewählt werden. Das ist technisch auch möglich, die Implementierung ist wesentlich komplexer aber wenn man sich etwas mit dem Thema befasst bekommt man das auch noch hin.

Das erkennen um welche Art von Bild es sich handelt braucht Rechenleistung (CPU) und Arbeitsspeicher (RAM), sogar relativ viel. Dann könnte man die Bilder noch optimieren um möglichst wenig skalieren und möglichst viel komprimieren zu können. Das frisst noch mehr CPU und RAM - für mehrere Minuten. (Fotos kann man z.B. super mit guezli https://github.com/google/guetzli komprimieren, das verwende ich auch recht gerne. Dann sind aber mehrere CPU-Kerne für mehrere Minuten pro Foto gut ausgelastet und ein paar hundert MB RAM werden auch belegt bis das optimal komprimierte Bild fertig ist.)

RAM und CPU sind bei Webservern entweder begrenzt verfügbar (Festpreispakete für shared Hoting/vServer/Root-Server) oder kosten zusätzlich Geld (bei Cloud-Diensten). Bei Festpreispaketen gibt es dann die Grenze ab der die CPUs so stark mit der Bildverarbeitung beschäftigt sind, dass das ausliefern der Webseite zu lange dauert und ein paar Benutzer einen Timeout-Fehler statt den neusten Beiträgen im Elko-Forum sehen. Bei Cloud-Diensten wird es für den Betreiber halt am ende des Monats unangenehm teuer wenn viele Bilder hochgeladen werden.

Gruß
Bastelix



Gesamter Thread:

Was ist das für ein Bauteil - Torsten-Oliver, 29.12.2017, 21:20 (Elektronik)
Was ist das für ein Bauteil - JBE(R), 29.12.2017, 21:52
Was ist das für ein Bauteil - Torsten-Oliver, 29.12.2017, 22:51
Was ist das für ein Bauteil - JBE(R), 29.12.2017, 23:03
Was ist das für ein Bauteil - Torsten-Oliver, 30.12.2017, 19:14
Was ist das für ein Bauteil - xy(R), 30.12.2017, 19:18
Was ist das für ein Bauteil - Torsten-Oliver, 30.12.2017, 19:21
Was ist das für ein Bauteil - xy(R), 30.12.2017, 19:31
Das (ewige) Wehklagen des "Bild nicht öffnen wollen" - schaerer(R), 30.12.2017, 08:44
hab dich nicht so... - Sel(R), 30.12.2017, 09:56
ich hab mich nicht so... - schaerer(R), 30.12.2017, 10:52
hab dich nicht so... - Henk, 30.12.2017, 11:11
hab dich nicht so... - ollanner(R), 30.12.2017, 12:07
OT: Bilddateien - otti(R), 30.12.2017, 12:12
OT: Bilddateien - schaerer(R), 30.12.2017, 13:25
OT: Bilddateien - xy(R), 30.12.2017, 14:36
OT: Bilddateien - Henk, 30.12.2017, 15:16
hab dich nicht so... - JBE(R), 30.12.2017, 13:18
Ein Einführungsvorschlag... - schaerer(R), 30.12.2017, 13:46
Ein Einführungsvorschlag... - Sel(R), 30.12.2017, 18:10
hab dich nicht so... - bastelix(R), 31.12.2017, 01:21
hab dich nicht so... - Henk, 31.12.2017, 11:14
hab dich nicht so... - Sel(R), 31.12.2017, 14:55
hab dich nicht so... - bastelix(R), 03.01.2018, 01:20
Einfache Lösung - mnemonic(R), 02.01.2018, 21:00