| 

.NET C# Java Javascript Exception

2
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).
News:
10.02.2012
patgrauer 1 1
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.
LiRo 10.02.2012
1 Antwort
1
Hi

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:
<a href="link/zum/bild_1024x768.png">wallpaper</a>


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:

a.href = "link/zum/bild_" + width + "x" + height + ".png";


Mit jQuery lässt sich das auch einfach automatisieren, indem der Link eine bestimmte Klasse erhält:
<a href="link/zum/bild_1024x768.png"  class="wallpaperLink">wallpaper</a>


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];

url = path + "_" + width + "x" + height + "." + extension;

a.attr("href", url);

});
});


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:
<a href="link/zum/bild.php?bild=wallpaperX&width=1920&height=1080"  class="wallpaperLink">wallpaper</a>


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.

Grüße
huckepick
10.02.2012
huckepick 887 2 8
ganz zu schweigen von Multi Screen Konfigurationen
Jaksa 10.02.2012
ja ... an die hatte ich auch schon gedacht :-)
huckepick 11.02.2012

Stelle deine Java-Frage jetzt!