Java放大高分辨率图像,没有像素化或丢失绘图

时间:2015-07-01 03:43:46

标签: java swing zoom

我使用this answer中找到的方法为图像标注应用程序创建放大/缩小功能。然而,尽管处理相对高分辨率的图像(1500×1500像素的数量级),缩放的缩放方法导致像素化。我检查了Windows照片查看器中的图像,我可以在没有太多像素化的情况下放大,直到比我的代码中的200%缩放更多。

如果我只调整大小与原始图像相比(即没有级联每个调整大小调用),这很好用(这是代码片段中的内容)。但为了做到这一点,我失去了任何绘图功能。基本上,我希望能够做到以下几点:

  1. 加载图片
  2. 在其上绘制线条/圆圈/形状/等
  3. 放大(维护图像上的任何图形)
  4. 画更多
  5. 根据我需要的原因随意放大/缩小
  6. 总之,调整缩放的工作原理。它在缩放的每个阶段保留了任何额外的绘图,而我似乎无法获得。

    这是我的调整大小功能的代码片段(严重受到之前引用的答案的影响):

    private void resizeImage()
    {
        int newImgW = (int)(this.zoom * this.imgW);
        int newImgH = (int)(this.zoom * this.imgH);
        BufferedImage resized = new BufferedImage(newImgW, newImgH, originalImage.getType());
        graphics2D = resized.createGraphics();
        graphics2D.drawImage(this.originalImage, 0, 0, newImgW, newImgH, null);
        this.image = resized;
        repaint();
    }
    

0 个答案:

没有答案