Leider ist es in JavaScript nicht ganz einfach Bilder zu drehen. Da es trotzdem von großem Vorteil ist, Bilder am Client in der Darstellung verändern zu können (da der Server entlastet wird), hier eine kleine Zusammenstellung aller von mir bisher gefundenen Möglichkeiten, dies trotzdem zu verwirklichen.
Bilder können durchaus in JavaScript erstellt werden. Mit den schon von anderen Programmiersprachen bekannten Algorithmen kann man Bilder auch in JS erstellen, drehen, zoomen, … Eine solche Vorgehensweise hatte sich auch der Autor eines Forum-Beitrages auf tutorials.de überlegt und einen simplen Algorithmus zum grafischen Darstellen der Mandelbrotmenge implementiert.
Vorteile:
- Theoretisch sind keine Grenzen gesetzt, da man jeden schon bekannten Algorithmus implementieren kann
- Evtl. sind noch einige Performanceverbesserungen möglich
- Man ist von keinem externen Framework abhängig
Nachteile:
- Geschwindigkeit:Hier werden zwei verschachtelte for-Schleifen benötigt (Gesamtdurchlaufzahl ist dabei von der Bildauflösung abhängig, jedoch ist bei ca. 78000 Pixeln eines Bildes eine Wartezeit von ca. 5sec (ist natürlich vom Browser und vom verwendeten Client abhängig) beim Berechnen des Bildes zu erwarten. Denkt man hier nun an die Drehung eines Bildes ist dies doch etwas langwierig)
- Per Default kann man so nur mit Bitmap-Grafiken arbeiten. Man muss also alle anderen Bildtypen (.jpg, .gif, .png, .dcm, …) zuerst in ein Byte-Array umrechnen, was wieder einiges an Rechenzeit beansprucht
- Die so berechneten Bilder können nicht vom IE dargestellt werden. Hierzu benötigt man einen eigenen Wrapper (im Original von Benn Herrera implementiert – jedoch müsste man dieses Konzept erst auf die angesprochene Lösungsmöglichkeit portieren)
2.) DoJo.gfx ist zwar sehr schnell, kann jedoch nur mit vektor basierten Dateien umgehen (.svg, .xml)
3.) Mit CANVAS ist auch das schnelle Zeichnen mit JavaScript möglich. Eine gute Anlaufstelle, um sich mit Canvas zu bescäftigen ist das Mozilla Developer Center. Beispiele für Canvas Anwendungen findet man hier auch (Beispiel). Getestet habe ich das Ganze bis jetzt mit Safari, Mozilla und Opera unter Mac OS X.Das könnte durchaus die Lösung des Problemes sein. Wie so oft bleibt aber der IE aussen vor. Einen Wrapper für den IE kann man hier finden. Wie gut dieser allerdings funktioniert ist mir noch unklar.
Bei Zeiten werde ich versuchen die hier vorgestellten Verfahren zum Drehen und Zoomen von 512×512 Bildern umzusetzen (das Format entspricht DICOM Dateien). Sobald dies erledigt sein sollte werde ich hier natürlich einene passenden Beitrag erstellen