0

カスタム クラスの一部として、バッファリングされた画像をネットワーク経由で送信したいと考えています。

私は現在、自分のクラスを取得するために writeObject と readObject だけを使用しています。

現在行っている画像を送信するには:

((DataBufferByte) i.getData().getDataBuffer()).getData();

それを BufferedImage に戻すにはどうすればよいですか?

これを行うためのより良い方法はありますか?

私が送信するクラスは次のようになります。

public class imagePack{

public byte[] imageBytes;
public String clientName;
public imagePack(String name, BufferedImage i){
    imageBytes = ((DataBufferByte) i.getData().getDataBuffer()).getData();
    clientName = name;
}

    public BufferedImage getImage(){
     //Do something to return it}

}

再度、感謝します

4

1 に答える 1

0

それを BufferedImage に変換したい場合は、その幅、高さ、およびタイプも知っている必要があります。

class imagePack {

    public byte[] imageBytes;
    public int width, height, imageType;
    public String clientName;

    public imagePack(String name, BufferedImage i) {
        imageBytes = ((DataBufferByte) i.getData().getDataBuffer())
                .getData();
        width = i.getWidth();
        height = i.getHeight();
        imageType = i.getType();
        clientName = name;
    }

    public BufferedImage getImage() {
        if (imageType == BufferedImage.TYPE_CUSTOM)
            throw new RuntimeException("Failed to convert.");
        BufferedImage i2 = new BufferedImage(width, height, imageType);
        byte[] newImageBytes = ((DataBufferByte) i2.getData()
                .getDataBuffer()).getData();
        System.arraycopy(imageBytes, 0, newImageBytes, 0, imageBytes.length);
        return i2;
    }
}
于 2013-04-21T13:57:33.607 に答える