【问题标题】:how to write double values in buffered image如何在缓冲图像中写入双精度值
【发布时间】:2016-05-19 11:30:09
【问题描述】:

是否有可能将双二维值写入缓冲图像而无需在 Java 中进行任何类型转换?我有一个带有双值的二维矩阵。我希望将其写为图像,但在缓冲图像中只能写入整数值。最后,我必须能够从该图像中读取那些双值。有任何想法吗 ??帮帮我

【问题讨论】:

  • 请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的摘要,以及您在解决问题时遇到的困难的描述。见How to create a Minimal, Complete, and Verifiable example
  • 是的,你可以。您需要创建由DataBuffer.TYPE_DOUBLE SampleModelDataBuffer 支持的自定义BufferedImage。不确定它有多有用,但至少非常可行。 double 值可以通过DataBuffer 的支持数组直接访问。
  • 感谢#haraldK 先生的帮助。我会试试这个

标签: java bufferedimage pixels


【解决方案1】:

是的,您可以,但首先您必须使用 DataBufferDouble 类型的 DataBuffer 创建一个 BufferedImage:

public static BufferedImage Double(int width, int height, int channel)
    {
    ColorSpace myColorSpace = new FloatCS(channel == 1 ? ColorSpace.TYPE_GRAY : ColorSpace.TYPE_RGB, channel) ;

    ColorModel myColorModel = new ComponentColorModel(myColorSpace,null,false,false,ColorModel.OPAQUE,DataBuffer.TYPE_DOUBLE) ;

    return new BufferedImage(myColorModel, myColorModel.createCompatibleWritableRaster(width, height), false, null) ;
    }

然后您使用 Raster 或直接使用 DataBuffer 访问像素,而不是 getRGB。

【讨论】:

  • 谢谢@FiReTiTi。你能解释一下如何在图像上使用它吗??
  • 我刚才给你的代码已经是图像了。然后,您可以使用带有 getSample 和 setSample 方法的 Raster (mymimage.getRaster()) 或使用 DataBuffer:double[] buffer = ((DataBufferDouble)my image.getRaster().getDataBuffer()) 访问像素值。获取数据()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 2016-04-03
  • 2011-01-08
相关资源
最近更新 更多