【问题标题】:how do I scale a BufferedImage如何缩放 BufferedImage
【发布时间】:2012-07-07 05:09:20
【问题描述】:

我查看了this question,但它似乎并没有真正回答我的问题。我有一个图像文件,可能是任何分辨率。我需要将该图像以特定分辨率加载到BufferedImage 对象中(例如,对于此示例,为 800x800)。我知道 Image 类可以使用 getScaledInstance() 将图像缩放到新大小,但我不知道如何将其恢复为 BufferedImage。有没有一种简单的方法可以将缓冲图像缩放到特定大小?

注意我不想按特定因子缩放图像,我想拍摄图像并制作特定尺寸。

【问题讨论】:

  • 我不想按特定因子缩放图像,我想拍摄图像并制作特定尺寸这很容易做到:factor = originalSize\newSize;

标签: java swing bufferedimage


【解决方案1】:

这样的? :

 /**
 * Resizes an image using a Graphics2D object backed by a BufferedImage.
 * @param srcImg - source image to scale
 * @param w - desired width
 * @param h - desired height
 * @return - the new resized image
 */
private BufferedImage getScaledImage(Image srcImg, int w, int h){
    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TRANSLUCENT);
    Graphics2D g2 = resizedImg.createGraphics();
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2.drawImage(srcImg, 0, 0, w, h, null);
    g2.dispose();
    return resizedImg;
}

【讨论】:

    【解决方案2】:

    您可以创建一个您想要大小的新 BufferedImage,然后将原始图像按比例绘制到新图像中:

    BufferedImage resizedImage = new BufferedImage(new_width, new_height, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g = resizedImage.createGraphics();
    g.drawImage(image, 0, 0, new_width, new_height, null);
    g.dispose();
    

    【讨论】:

      【解决方案3】:

      查看此网站Link1

      或者 这个Link2

      【讨论】:

      • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
      • 感谢@KarlRichter 的输入。我一定会尽快更新答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多