.
Druckbare Version
.
Gar nicht.
Mit JavaScript kann man keine Dateien und daher auch keine Bilder bearbeiten.
Mit PHP (oder einer anderen Server seitigen Programmiersprache) ginge dies hingegen schon, auch wenn das Ergebnis nicht immer zufrieden stellend ist xD.
JavaScript hat vollen Zugriff auf das DOM und kann damit auch CSS-Eigenschaften setzen:
Code:var foo = document.getElementById("foo");
foo.style.opacity = 0.5;
Mh; kommt drauf an, was du willst und wie du das bewerkstelligen willst. Wenn du den Farbton eines Bildes mit PHP/gd ändern willst (beispielsweise von rot auf grün), dann ist es am einfachsten, jeden Pixel in HSL umzurechnen (fertige Snippets lassen sich einfach finden), die Hue-Komponente zu verändern und dann zurückzukonvertieren. Das Ergebnis sollte nicht nennenswert schlechter als das Originalbild sein, wenn du keinen Unfug codest.
Dummerweise verwendet der IE dafür DirectX-Filter, die ausschließlich unter IE/Win laufen.
Ich würde dir raten, das serverseitig mit PHP und gd zu machen. gd ist bei den meisten Hostern in PHP eingebaut; du solltest also keine Probleme haben, es zu verwenden.
Der Algorithmus sollte einfach sein:
Natürlich mußt du in der Praxis noch das Bild öffnen, die RGB-Werte für den Pixel extrahieren, etc. Aber mit der Referenz auf php.net sollte das machbar sein.Code:FÜR jede Bildzeile
FÜR jeden Pixel in der Zeile
temp = RGB_zu_HSL(Pixel) // Pixel nach HSL umrechnen
temp.S = 0 // Sättigung auf 0 setzen
Pixel = HSL_zu_RGB(temp) // Nach RGB zurückrechnen
Falls du es nicht hinkriegst und/oder ich nach dem Tutorium noch Zeit toschlagen muß kann ich mal sehen, ob ich's auf die Schnelle hingemacht kriege.
Naja, teilweise wirken mit GD bearbeitete Bilder recht pixelig, besonders wenn man eine Schrift ins Bild klatscht :p.
Hm. Wäre mir neu; die NATO-Namensschilder werden mit gd erstellt und da kann ich problemlos ein Bild in ein anderes einfügen und dann Text daneben setzen. Alphatransparenz ist kein Problem; die Karte hatte einmal sogar eine halbtransparente Ebene über dem normalen Kram.
Ich vermute mal, daß du die falschen Funktionen benutzt (beispielsweise imagecreate() statt imagecreatetruecolor()) oder nach JPEG speicherst (ich weiß nicht, wie heftig PHP da komprimiert). Oder nach GIF, aber warum sollte jemand das tun?
TrueColor-Bilder, die als PNG gespeichert werden, sollten absolute Qualität heben. Und jetzt mal ehrlich: Wer würde für Bedien-/Informationselemente auf seiner Website was anderes als PNG verwenden? GIF meist ist auch nicht kleiner und unterstützt nur eine 8bittige Palette pro Bild und 1bittige Transparenz. JPEG ist nur in hohen Qualitätsstufen sinnvoll und kann gar keine Transparenz. SVG wird nicht überall unterstützt. Was hochqualitative Bilder mit brauchbar aussehenden Kanten angeht ist PNG momentan das einzig plausible Format.
Laut PHP-Doc Mit etwa 75% Qualität (oder wie auch immer man das am besten ausdrückt).
Bei Webdesign hat man dann mit Pech das Problem, dass der IE die Farben der PNGs anders darstellt als die CSS Farben, warumauchimmer.Zitat:
TrueColor-Bilder, die als PNG gespeichert werden, sollten absolute Qualität heben. Und jetzt mal ehrlich: Wer würde für Bedien-/Informationselemente auf seiner Website was anderes als PNG verwenden? GIF meist ist auch nicht kleiner und unterstützt nur eine 8bittige Palette pro Bild und 1bittige Transparenz. JPEG ist nur in hohen Qualitätsstufen sinnvoll und kann gar keine Transparenz. SVG wird nicht überall unterstützt. Was hochqualitative Bilder mit brauchbar aussehenden Kanten angeht ist PNG momentan das einzig plausible Format.
BTW: Mir ist bewusst, dass man mit JS die CSS-Attribute eines Objektes ändern kann, aber es bleibt für mich CSS. JS wäre es IMO, wenn man sowas wie document.getElementById('image').saturate(foobar); machen könnte. Aber das nur nebenbei.