AJAX - Bilder aus Stream Ersetzen
maddog1169
- javascript
Es ist ja möglich, einem IMG für die Quelle einen Datenstrom zuzuweisen
<img src="http://localhost/streamImage.php">
welcher auf den gängigen Browsern funtioniert.
versuche ich nun in einem Script Bilddaten aus einer Datenbank zuzuweisen (strom wird base64 encodiert per XML übertragen und auf Clientseite wieder decodiert - soweit so gut)
Aber mit ner Zuweisung an das SRC attribut klappts dann leider nicht.
(ok, sollte wohl nur 'ne URL sein)
Weiss wer einen Weg wie ich die erfolgreich übertragenen Daten nun dennoch als Bild unter Verwendung der übertragenen XML Daten verwenden kann ?
.
.
.
<script language='JavaScript'>
imageData = decodeBase64( xmlHttpReqImage[0].firstChild.data );
// image data enthält die korrekten Bilddaten
.
.
.
</script>
nur, wie bekomme ich es nun hin, das Bild mit der ID 'pic'
den Inhalt nun auch darstellt ?
<img id='pic' src='gfx/dummy.gif'>
die Zuweisung via
document.getElementById('pic').src = imageData;
funktioniert jedenfalls nicht.
Natürlich könnt ich ne Serverseitige PHP Funktion schreiben
die dann eine URL auswerten würde, was sicherlich auch klappt
aber gehts nicht "eleganter" ?
Läßt sich irgendwie der Inhalt des Image-Objekts ändern ?
Lieber maddog1169,
Aber mit ner Zuweisung an das SRC attribut klappts dann leider nicht.
(ok, sollte wohl nur 'ne URL sein)Weiss wer einen Weg wie ich die erfolgreich übertragenen Daten nun dennoch als Bild unter Verwendung der übertragenen XML Daten verwenden kann ?
... ich könnte mir nur ein Szenario vorstellen, bei dem Du inline-Grafiken einsetzt, die aber bekanntlich nicht von allen Browsern dargestellt werden.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Tach maddog1169,
Weiss wer einen Weg wie ich die erfolgreich übertragenen Daten nun dennoch als Bild unter Verwendung der übertragenen XML Daten verwenden kann ?
Zumindest Opera 9.x ist in der Lage, Base64-kodierte Inhalte direkt mittels <img src="..." alt="..." /> bzw. <object data="..." type="...">...</object> darzustellen.
Der src-/data-Attributinhalt sieht für ein JPEG-Bild dann jeweils so aus (analog für image/gif oder image/png):
data:image/jpeg;base64,daten_strom
Man liest sich,
svg4you