【问题标题】:how to Convert a Grayscale image where each pixel is 8 bits to an image having 3 bit representation for each pixel only?如何将每个像素为 8 位的灰度图像转换为每个像素仅具有 3 位表示的图像?
【发布时间】:2017-02-17 17:30:14
【问题描述】:

在我的 java 项目中,我需要一种将 8 位 (0,225) 灰度图像转换为 3 位 (0,7) 的方法。有任何想法吗?

我用过这个方法,但它给了我

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常: 坐标超出范围!

image.getRaster().setSample(x, y, image.getRaster().getSample(x,y, 0)/32) 

【问题讨论】:

  • “不起作用”这句话并不能告诉我们太多信息。您可能会发现这很有帮助:How do I ask a good question?.
  • 更改样本以使用更少的位实际上不会将图像更改为 3 位灰度图像。图像数据缓冲区仍然是与以前相同的每像素位数。 --- 如果要保持近似像素“颜色”(灰度级),则应清除低位,而不是移位,所以使用sample = sample & 0xE0

标签: javascript java image-processing grayscale digital


【解决方案1】:

我想你只是忘记了除以 32 不会给你一个整数。 尝试将该值解析为 INTEGER,它可能(或不)解决您的问题。

由于错误与数组大小有关,请确保您没有超出图像长度和高度的限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2018-11-28
    • 2019-08-07
    • 2010-10-19
    相关资源
    最近更新 更多