content top
bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Imagescaling fürs Web

Da es in den letzten Tagen thematisiert wurde und es mich in allen Teilbereichen tangiert, will auch ich dazu meinen Senf abgeben: Inhaltsorientierte Bildskalierung.

Das Problem ist altbekannt. Während sich eine Website in Punkto Schrift und Layout problemlos skalieren und damit den Browserfensterdimensionen des Users anpassen läßt, funktioniert das mit Bildern nur bedingt. Natürlich lassen sich Bilder ebenfalls skaliert anzeigen, allerdings leidet die Darstellungsqualität beim Verkleinern schon erheblich, beim Vergrößern kann es bis zur Unkenntlichkeit kommen. Abhilfe schafft dabei höchstens das Ausgangsbild in ausreichender Größe bereitzustellen und demnach nur die Verluste beim Verkleinern in Kauf zu nehmen. Dies geht jedoch zu Lasten der Bandbreite und der Ladegeschwindigkeit, da die Bilder in 90% aller Fälle in unnötig großen Dimensionen übertragen würde. Da aber inzwischen Größen vom Handydisplay bis zum 30″ TFT mit den jeweiligen maximalen Fensterauflösungen bedient werden wollen, ist die Spanne von der kleinsten zur größten benötigten Bilddimension immens und diese Methode äußerst fragwürdig.

Zwei Herren von der Efi Arazi School of Computer Science in Israel haben sich dazu etwas einfallen lassen, das auf den ersten Blick überrascht, auf den zweiten Blick aber leider auch gar nicht überzeugen kann. Beispielvideos gibt es hier und hier.

Um nicht zu wiederholen um was es geht, lese man bitte erst die Kurzerklärung hier.

So, wo ist nun das Problem? Für einen Informatiker scheint sich keines zu offenbaren, angesichts des tollen Algorithmus, den man entwickelte. Aber aus dem Standpunkt eines Photographen sträuben sich sämtliche Nackenhaare, werden doch die Bilder in nicht geringer Art und Weise verfremdet, verfälscht und verzerrt. Perspektiven und Verhältnisse werden vom Algorithmus “gedankenlos” entsorgt. Um das Beispiel des Hundes und des roten Balles auf der grünen Wiese aufzunehmen: es ist schon interessant ob der Hund dem Ball hinterherjagte oder er den Ball bereits fast eingeholt hat. Außerdem ist, abhängig von der Perspektive des Bildes, der Hund einmal vermeintlich viel kleiner als der Ball (weil er weit hinter ihm ist) oder er ist eben viel kleiner als der Ball (weil die perspektivische Distanz gelöscht wurde). Das kann bei manchem Bild noch recht belanglos, allenfalls verwirrend sein, bei der Anwendung auf Bilder die journalistische oder gar geschichtliche Korrektheit haben sollen, ist es ein absolutes No-Go.

Der Algorithmus an sich hätte durchaus ein 1+ verdient, aber wegen Themaverfehlung wird es dann doch eine 5-. Hätte einem der beiden aber vielleicht auch mal auffallen können…

Aber wie kommt man der Bildskalierung jetzt wirklich zu Rande?

Hätte ich darauf eine Antwort hätte ich meinen Job verfehlt. Aber da ich mir bereits vor einigen Jahren darüber Gedanken gemacht hab, bin ich inzwischen zu folgenden Schlüssen gekommen:

  • Clientseitig ginge das nur mittels Javascript/AJAX und das kann nicht mit Gewissheit vorausgesetzt werden.
  • Ohne JS clientseitig wäre alles nur unter hohem Traffic realisierbar und fällt damit aus.
  • Serverseitige Skalierung vor der Auslieferung wäre ideal, jedoch fehlt die wichtigste Information, nämlich die benötigte Größe.
  • Dem Server die Größe des Browserfensters mittels Sessioncookie auf Basis der vorherig ausgelieferten Seite mitzuteilen, bedingt zum einen Cookies, zum anderen bleibt es eine fixe Vermutug der Größe, die eine Fensterskalierung aus Acht läßt.

Generell wäre die Arbeit der Bildskalierung beim Server schon richtig aufgehoben, da dort die nötige CPU-Leistung erbracht werden kann und auch richtige Skalierungsalgorithmen angewandt werden können. Zudem geschähe alles vom User und auch von der Websiteprogrammierung unabhängig. Aber halt nur fast, da ja irgendwo die Fensterdimensionen herkommen müssen.

Demnach bleibt es im Moment beim Ansatz, dass es nur ein Verbund aus Asynchronem Javascript und serverseitiger Skalierung (evtl. in Form eines Webserver-Moduls) sein kann.

Falls jemandem etwas besseres einfällt, bin ich ganz Ohr…

Kein Kommentar »

Noch keine Kommentare.

RSS-Feed für Kommentare zu diesem Artikel. TrackBack-URL

Einen Kommentar hinterlassen

Sie müssen angemeldet sein, um einen Kommentar schreiben zu können.