Announcement

Collapse
No announcement yet.

Image casten bzw. versenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Image casten bzw. versenden

    Tag zusammen,

    ich habe ein Problem mit der Image-Klasse des awt. Vielleicht hat ja jemand einen Tip für mich?

    Ich habe ein java.awt.Image bzw. ein java.awt.image.BufferedImage.

    Frage 1: Wie können die in etwas anderes gecastet werden, z.bB. in ein byte[] oder in einen String?

    Frage 2: Die obige Frage entsteht daraus, das ich ein gegrabtes Image per Socket verschicken, will. Dabei wirft mir die VM aber stets eine Nullpointer-Exception raus, die - so weit bin ich immerhin - wohl daher kommt, das weder Image noch BufferedImage serialisierbar sind. Wie kann ich aber nun Image oder BufferedImage serialisieren und verschicken?

    Peter

  • #2
    Du kannst das Image in einen Stream (JPEG) stecken und dann alles mögliche damit anfangen.

    <pre>import java.io.FileOutputStream;
    import java.io.OutputStream;
    import java.io.IOException;
    import java.awt.image.BufferedImage;
    import java.awt.Graphics2D;
    import java.awt.Color;
    import java.awt.geom.Line2D;
    import java.awt.geom.Point2D;
    import java.awt.FontMetrics;

    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;

    public class Stock {
    private static int ImageWidth = 300;
    private static int ImageHeight = 300;

    public String createImage(OutputStream stream) throws IOException
    {

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(stream);

    BufferedImage bi = new BufferedImage(ImageWidth + 10,
    ImageHeight,
    BufferedImage.TYPE_BYTE_INDEXED);

    Graphics2D graphics = bi.createGraphics();
    graphics.setColor(Color.white);
    graphics.fillRect(10, 10, 20, 20);

    graphics.setColor(Color.red);

    encoder.encode(bi);

    return "image/jpg";
    }

    /**
    * Test Entrypoint
    *
    */
    public static void main(String[] args)
    {

    try
    {
    FileOutputStream f = new FileOutputStream("d:\\stockgraph.jpg");
    Stock stock = new Stock();
    stock.createImage(f);
    f.close();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }

    }</pre>
    <br>Ich habe ein funktionierendes Programm zusammengekürzt und
    sollte trotzdem funktionieren.

    lg Dietma

    Comment

    Working...
    X