我的问题涉及 Java Graphics2D 中的 drawImage 方法(这适用于桌面应用,而非Android)。
我要绘制的 BufferedImage 包含高分辨率二进制数据,大多数像素是黑色但我有一些稀疏绿色像素(绿色像素表示来自传入原始数据流的数据点) 。位图非常大,比我的典型面板大小要大。我做得很大所以我可以放大和缩小。问题是,当我缩小时,我丢失了一些绿色像素..例如,如果我的图像是1000像素,而面板是250像素,我会在每个方向(X和Y)中丢失4个像素中的1个。如果我在缩放时使用最近邻插值,则像素可以消失为黑色。如果我使用像双线性插值这样的东西,我的绿色像素会重新着色到黑色和绿色之间。我理解所有这些行为,但我的问题是,是否有任何方法可以获得我想要的行为,这是为了确保任何像素是非黑色的我希望它以它的全强度绘制。也许就像“最大持有”插值。
我意识到我可以通过在黑色背景上绘制形状基元来做我想做的事情,也许这就是我必须要做的。但是有一个原因我正在使用位图(这与我在一个下降的频谱图型显示器中显示数据的事实有关 - 而且它确实有一个模式,所有像素都可以着色而不仅仅是黑色和绿色)。
谢谢,
答案 0 :(得分:0)
您可以查看drawImage的实现并覆盖它以获得所需的行为,但是扩展的核心可能使用硬件加速,因此在Java中重新实现它会非常慢。
您可以查看JOGL,但我的印象是,如果您的像素非常稀疏,只需在黑色背景(或图像上)绘制绿色像素就可以轻松编码并且速度非常快。 如果点数开始过高,您甚至可以在绘制点之间进行启发式切换以缩放图像。