Karin: Image aus InputStream erzeugen

Hallo da draußen!

ich habe ein ganz doofes Problem: Ich muss aus einem InputStream, genauer gesagt einem ByteArrayInputStream, ein Bild erzeugen.. aber meine Idee funktioniert irgendwie nicht:

StringBuffer buffer = new StringBuffer();
int c;
while ((c = stream.read()) != -1) buffer.append((char) c);

Image image = java.awt.Toolkit.getDefaultToolkit().createImage(buffer.toString().getBytes());

Weiß jemand bescheid, wie man das so hinbekommt, dass es funktioniert??

  1. hallo,

    aber meine Idee funktioniert irgendwie nicht

    Bekanntes Problem: der Fragesteller verzichtet vollständig auf eine genaue Angabe der Fehlermeldung.

    seufz.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. aber meine Idee funktioniert irgendwie nicht

      Bekanntes Problem: der Fragesteller verzichtet vollständig auf eine genaue Angabe der Fehlermeldung.

      seufz.

      Es gibt keine Fehlermeldung... das Bild wird einfach nicht angezeigt. Vermutlich liegt es daran, dass String.getBytes() den Zeichensatz berücksichtigt, obwohl ich einfach nur die "Roh"-Daten haben möchte.

      So funktioniert es jetzt.. aber ich finde das irgendwie viel zu umständlich, mit zwei Schleifen. Kann java.io das nicht einfacher?

      StringBuffer buffer = new StringBuffer();

      int c, count = 0;
      while ((c = stream.read()) != -1) {
       buffer.append((char) c);
       count++;
      }

      byte[] bytes = new byte[count];
      for (int i = 0; i < count; i++) {
       bytes[i] = (byte) buffer.toString().charAt(i);
      }

      1. Hallo,

        Es gibt keine Fehlermeldung... das Bild wird einfach nicht angezeigt. Vermutlich liegt es daran, dass String.getBytes() den Zeichensatz berücksichtigt, obwohl ich einfach nur die "Roh"-Daten haben möchte.

        Ja, genau so ist es.

        So funktioniert es jetzt.. aber ich finde das irgendwie viel zu umständlich, mit zwei Schleifen. Kann java.io das nicht einfacher?

        Nicht direkt java.io, aber javax.ImageIO, wenn das in Frage kommt.
        Dazu siehe http://www.exampledepot.com/egs/javax.imageio/BasicImageRead.html.

        Ansonsten:
        Was willst Du eigentlich immer mit dem StringBuffer? War nicht in Deinem Ausgangsposting von einem InputStream, genauer einem ByteArrayInputStream die Rede? Dieser hat eine Methode
        public int read()
        Diese liest ein Byte, welches man dann mit
        public void write(int b)
        in einen ByteArrayOutputStream schreiben könnte, welcher dann per
        public byte[] toByteArray()
        ein Byte-Array für
        Toolkit.createImage(byte[] imagedata)
        erzeugen könnte.

        viele Grüße

        Axel

        1. So funktioniert es jetzt.. aber ich finde das irgendwie viel zu umständlich, mit zwei Schleifen. Kann java.io das nicht einfacher?
          Nicht direkt java.io, aber javax.ImageIO, wenn das in Frage kommt.
          Dazu siehe http://www.exampledepot.com/egs/javax.imageio/BasicImageRead.html.

          1000 Dank!! :-*

          Ist genau das, was ich gesucht habe!1

          Was willst Du eigentlich immer mit dem StringBuffer? War nicht in Deinem Ausgangsposting von einem InputStream, genauer einem ByteArrayInputStream die Rede? Dieser hat eine Methode

          mh guter Tipp.. wusste garnicht, dass es sowas gibt.

          Wünsche allen einen guten Start in die Woche!!