我的问题涉及Java Graphics2D中的drawImage方法(这是针对桌面应用程序而非Android的)。
我希望绘制的BufferedImage包含高分辨率的二进制数据,大多数像素为黑色,但我有一些稀疏的绿色像素(绿色像素表示来自原始数据流的数据点)。位图相当大,比我的典型面板大小要大。我之所以将它做得这么大是因为我可以放大和缩小。问题是,当我缩小时,我会失去一些绿色像素。例如,如果我的图像为1000像素,面板为250像素,则在每个方向(X和Y)上都会丢失1个像素中的4个像素。如果我在缩放时使用最近邻插值法,则像素可能会消失成黑色。如果我使用双线性插值之类的东西,我的绿色像素将被重新着色为黑色和绿色之间的某个颜色。
我理解所有这些行为,但我的问题是是否有任何方式可以获得我想要的行为,即确保如果任何像素不是黑色,我希望它以其完整强度进行绘制。也许有一些“最大持有”插值之类的东西。
我意识到我可能可以通过在黑色背景上绘制形状原语来做我想做的事情,也许这就是我必须做的。但我使用位图(与我在下降谱图类型显示器中显示数据有关 - 它确实有一种模式,其中所有像素都可以着色而不仅仅是黑色和绿色)。
谢谢。
我希望绘制的BufferedImage包含高分辨率的二进制数据,大多数像素为黑色,但我有一些稀疏的绿色像素(绿色像素表示来自原始数据流的数据点)。位图相当大,比我的典型面板大小要大。我之所以将它做得这么大是因为我可以放大和缩小。问题是,当我缩小时,我会失去一些绿色像素。例如,如果我的图像为1000像素,面板为250像素,则在每个方向(X和Y)上都会丢失1个像素中的4个像素。如果我在缩放时使用最近邻插值法,则像素可能会消失成黑色。如果我使用双线性插值之类的东西,我的绿色像素将被重新着色为黑色和绿色之间的某个颜色。
我理解所有这些行为,但我的问题是是否有任何方式可以获得我想要的行为,即确保如果任何像素不是黑色,我希望它以其完整强度进行绘制。也许有一些“最大持有”插值之类的东西。
我意识到我可能可以通过在黑色背景上绘制形状原语来做我想做的事情,也许这就是我必须做的。但我使用位图(与我在下降谱图类型显示器中显示数据有关 - 它确实有一种模式,其中所有像素都可以着色而不仅仅是黑色和绿色)。
谢谢。
RescaleOp
不用于改变图像的大小,而是用于在像素的颜色值上应用线性函数。 - Arash Shahkar