gpt4 book ai didi

Java绘制图像插值

转载 作者:行者123 更新时间:2023-12-02 08:24:45 25 4
gpt4 key购买 nike

我的问题涉及Java Graphics2D中的drawImage方法(这是针对桌面应用程序,而不是Android)。

我想要绘制的BufferedImage包含高分辨率二进制数据,大多数像素是黑色的,但我有一些稀疏的绿色像素(绿色像素代表来自传入原始数据流的数据点) 。位图非常大,比我的典型面板尺寸还要大。我把它调大了,这样我就可以放大和缩小。问题是,当我缩小时,我会丢失一些绿色像素。例如,如果我的图像是 1000 像素,面板大小是 250 像素,那么我会在每个方向(X 和 Y)丢失 4 个像素中的 1 个。如果我在缩放时使用最近邻插值,像素可能会消失为黑色。如果我使用双线性插值之类的东西,我的绿色像素将被重新着色为黑色和绿色之间的某个位置。

我理解所有这些行为,但我的问题是有什么方法可以得到我想要的行为,即确保是否有任何像素是非黑色的,我希望它以全强度绘制。也许类似于“最大保持”插值。

我意识到我可以通过在黑色背景上绘制形状基元来完成我想做的事情,也许这就是我必须做的。但是我使用位图是有原因的(与我在下降频谱图类型显示器中显示数据有关),并且它确实有一种模式,其中所有像素都可以着色,而不仅仅是黑色和绿色的)。

谢谢

最佳答案

您可以查看drawImage的实现并重写它以获得您想要的行为,但是缩放的核心可能使用硬件加速,因此在Java中重新实现它会非常慢。

您可以查看 JOGL,但我的印象是,如果您的像素确实稀疏,只需在黑色背景(或图像上)绘制绿色像素就可以轻松编码并且速度非常快。如果点数开始太高,您甚至可以在绘制点和缩放图像之间进行启发式切换。

关于Java绘制图像插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12519808/

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