Java放大高分辨率图像,无像素化或丢失图形
我正在使用中找到的方法为图像标签应用程序创建放大/缩小功能。然而,尽管处理相对高分辨率的图像(1500x1500像素),缩放的缩放方法仍会导致像素化。我在Windows Photo Viewer中查看了这幅图像,我完全可以在不进行太多像素化的情况下进行放大,直到比我代码中的200%放大率大得多 如果我只根据原始图像调整大小(即,不层叠每个调整大小调用),则效果很好(这就是代码段中的内容)。但为了做到这一点,我失去了任何绘图功能。基本上,我希望能够做到以下几点:Java放大高分辨率图像,无像素化或丢失图形,java,swing,zooming,Java,Swing,Zooming,我正在使用中找到的方法为图像标签应用程序创建放大/缩小功能。然而,尽管处理相对高分辨率的图像(1500x1500像素),缩放的缩放方法仍会导致像素化。我在Windows Photo Viewer中查看了这幅图像,我完全可以在不进行太多像素化的情况下进行放大,直到比我代码中的200%放大率大得多 如果我只根据原始图像调整大小(即,不层叠每个调整大小调用),则效果很好(这就是代码段中的内容)。但为了做到这一点,我失去了任何绘图功能。基本上,我希望能够做到以下几点: 加载图像 在上面画线/圆圈/形状等
考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应一步缩放从来都不是一个好主意,您需要降低缩放比例以获得更好的结果,以及您正在调整大小的图像是什么?如果它不是原始图像,而是您已经调整大小以缩小的图像,则放大该图像将获得像素化图像。您也必须根据链接的代码从原始图像调整大小。@谢谢您提供的“逐步缩小比例”链接。我去看看。不过我不能分享代码,因为虽然我在写代码,而且代码很粗糙,而且我主要使用它,但我受到体制限制的约束。然而@Dijkgraaf指出了我明显的错误,这大大提高了性能。谢谢你们两位!
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();
}