我使用this answer中找到的方法为图像标注应用程序创建放大/缩小功能。然而,尽管处理相对高分辨率的图像(1500×1500像素的数量级),缩放的缩放方法导致像素化。我检查了Windows照片查看器中的图像,我可以在没有太多像素化的情况下放大,直到比我的代码中的200%缩放更多。
如果我只调整大小与原始图像相比(即没有级联每个调整大小调用),这很好用(这是代码片段中的内容)。但为了做到这一点,我失去了任何绘图功能。基本上,我希望能够做到以下几点:
总之,调整缩放的工作原理。它在缩放的每个阶段保留了任何额外的绘图,而我似乎无法获得。
这是我的调整大小功能的代码片段(严重受到之前引用的答案的影响):
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();
}