gpt4 book ai didi

java - 如何将 BufferedImage 转换为 int[]?

转载 作者:行者123 更新时间:2023-11-30 08:01:18 24 4
gpt4 key购买 nike

我希望通过套接字发送具有 BufferedImage 的对象。 BufferedImage 不可序列化,因此需要将其转换为可序列化数据类型,然后再转换回来。我在网上看了很多,byte[] 似乎只发送一个 BuffereImage,但我正在尝试发送整个对象,所以我更倾向于 int[]。我以为几周前我在这里遇到了一个解释这个问题的答案,但经过 2.5 小时的搜索我找不到它。我试过 Java Oracle,但很快就迷路了。

如果有更好的方法请原谅我的无知,因为我并没有真正使用套接字和 BufferedImage 操作。

最佳答案

BufferedImage 基本上是一个数组。像素存储在 DataBuffer 中,它是一个数组。

BufferedImage source = //...
switch ( source.getType() )
{
case BufferedImage.TYPE_BYTE_GRAY :
case BufferedImage.TYPE_3BYTE_BGR :
case BufferedImage.TYPE_4BYTE_ABGR :
final byte[] bb = ((DataBufferByte)source.getRaster().getDataBuffer()).getData() ;
//...
break ;
case BufferedImage.TYPE_USHORT_GRAY :
final short[] sb = ((DataBufferUShort)source.getRaster().getDataBuffer()).getData() ;
//...
break ;
case BufferedImage.TYPE_INT_RGB :
case BufferedImage.TYPE_INT_BGR :
case BufferedImage.TYPE_INT_ARGB :
final int[] ib = ((DataBufferInt)source.getRaster().getDataBuffer()).getData() ;
break ;
// etc.
}

您还需要发送图像尺寸以及 channel 数。

关于java - 如何将 BufferedImage 转换为 int[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37803008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com