Ich möchte eine per Client angeforderte Grafik serverseitig entsprechend der Bildschirmgröße des Client-Rechners per Java/JavaScript skalieren und dann in der angeforderten Zielgröße zurückliefern. Wie macht man sowas (Client-Bildschirmgröße abfragen/übernehmen, Grafik an die Zielgröße anpassen, Grafik zurückliefern)? Wer kennt entsprechende Beispielprogramme oder Links mit weiterführenden Informationen (derzeit fehlt mir noch eine genaue Idee, wie sich sowas umsetzen lässt)? Ich möchte meine eigenen Grafiken als Wallpaper (Hintergrundgrafiken) verfügbar machen. Der Server selbst läuft unter Linux und die Grafiken sind in einem gesonderten Bildverzeichnis abgelegt. In den Auswahlseiten sollen verkleinerte Vorschaubilder eingebunden werden (Thumbnails).
Dazu musst du uns schon mehr Informationen liefern. Wie ist dein Server aufgebaut (PHP/Java/M$-dotNot-Zeuch)? Client-Fenster-Größe kannst du per JavaScript auslesen. Und entsprächen den Background (CSS: background-image-Eigenschaft) setzten, die Fenstergröße dann als Parameter nicht vergessen.
Zuerst mal fällt es mir schwer, einen Sinn in deinem Vorhaben zu erkennen. Schließlich ist es nicht so, dass es eine unüberschaubare Anzahl von möglichen Auflösungen beim Client gäbe. Was spricht also dagegen, die nötigen Bilder einfach in den zu erwartenden Auflösungen auf dem Server abzulegen? Ein dynamisches generieren ist dann nicht mehr nötig. Wenn du zum eigenhändigen resizen zu faul bist, lassen sich dafür auch Skripte finden.
Wenn du statt einer Linkliste mit allen Auflösungen nur den korrekten Link für die Auflösung des Clients anzeigen willst, brauchst du aber JS.
Javascript gibt dir die Auflösung des Clients über das screen-Objekt zurück:
width = screen.width; height= screen.height;
Angenommen, du hast einen Link, der beispielsweise auf die Version in der von dir festgelegten Standardauflösung deiner Wallpaper zeigt:
Dann hast du für eine gegebene Auflösung beim Client die URL entsprechend anzupassen. Sei a der vorher identifizierte Link sowie width und height die vorher festgestellten Dimensionen, sähe das etwa so aus:
Beim Laden ($(document).ready(function() {});) werden dann die durch die Klasse markierten Links durchsucht und einzeln angepasst:
$(document).ready(function() { $("a.wallpaperLink")).each(function(a) { link = a.attr("href"); data = link.match(/^(.+?)_([0-9]+x[0-9]+)\.([a-zA-Z]+)$/); // prüfen, ob die syntax stimmt
if (!data) return; // schlägt prüfung fehl, link unbeachtet lassen
path = data[1]; resolution = data[2].split("x"); // brauchen wir eigentlich nicht mehr, da wir die ja neu setzen wollen extension = data[3];
Hier wird also jeder einzelne entsprechend markierte link durchlaufen. Mittels eines regulären Ausdrucks wird geprüft, ob der link auch das entsprechende Format hat und die einzelnen Segmente werden herausgefiltert. Danach wird die neue URL zusammengesetzt, mit dem originalen Pfad und der originalen Erweiterung - nur eben die Information zur Auflösung wird angepasst.
Soll das resizen der Bilder jetzt doch noch dynamisch passieren, muss der Link für die Wallpaper so angepasst werden, dass der Server die Informationen als Parameter entgegennehmen kann. In PHP in etwa so:
Wie Java das macht weiß ich nicht. Aber ich sage nochmal: es klinkt nach einer unausgegorenen Idee. Zum Beispiel haben die existenten Auflösungen voneinander abweichende Seitenverhältnisse. Dementsprechend müsste regelmäßig etwas vom Wallpaper angeschnitten werden. Ob du mit den dabei entstehenden Ergebnissen dann zufrieden sein wirst, ist mindestens zweifelhaft.