代码之家  ›  专栏  ›  技术社区  ›  Yngve Sneen Lindal

在调整高缓冲区图像的大小时,如何保持/支持某些像素值?

  •  2
  • Yngve Sneen Lindal  · 技术社区  · 14 年前

    BufferedImage resized = new BufferedImage(width, height, imageType);
    Graphics2D graphics2D = resized.createGraphics();
    graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); //Has worked best in my case
    graphics2D.drawImage(source, 0, 0, width, height, null);
    graphics2D.dispose();
    

    一件很无聊的事情是,我以前使用过一个库(以后不再使用了),它实际上保存了许多表示像素的有价值的数据。

    请注意,我手头有原始像素数据(2dint数组),如果这有任何帮助的话。该应用程序将处理许多不同大小的图像,所以我不确定高度必须是1100像素。

    1 回复  |  直到 14 年前
        1
  •  2
  •   mikera    14 年前

    你试过在渲染提示中打开抗锯齿吗?那也许会有帮助。

    如果没有,你可以很容易地编写自己的缩放函数。这其实很简单-你只需要:

    • 对于原始像素数据中的相关点上的每个循环(这将是一个由缩放因子确定的矩形区域)
    • 使用基于原始像素值的公式计算目标颜色
    • 使用BufferedImage.setRGB(…)设置目标像素的颜色