Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java放大高分辨率图像,无像素化或丢失图形_Java_Swing_Zooming - Fatal编程技术网

Java放大高分辨率图像,无像素化或丢失图形

Java放大高分辨率图像,无像素化或丢失图形,java,swing,zooming,Java,Swing,Zooming,我正在使用中找到的方法为图像标签应用程序创建放大/缩小功能。然而,尽管处理相对高分辨率的图像(1500x1500像素),缩放的缩放方法仍会导致像素化。我在Windows Photo Viewer中查看了这幅图像,我完全可以在不进行太多像素化的情况下进行放大,直到比我代码中的200%放大率大得多 如果我只根据原始图像调整大小(即,不层叠每个调整大小调用),则效果很好(这就是代码段中的内容)。但为了做到这一点,我失去了任何绘图功能。基本上,我希望能够做到以下几点: 加载图像 在上面画线/圆圈/形状等

我正在使用中找到的方法为图像标签应用程序创建放大/缩小功能。然而,尽管处理相对高分辨率的图像(1500x1500像素),缩放的缩放方法仍会导致像素化。我在Windows Photo Viewer中查看了这幅图像,我完全可以在不进行太多像素化的情况下进行放大,直到比我代码中的200%放大率大得多

如果我只根据原始图像调整大小(即,不层叠每个调整大小调用),则效果很好(这就是代码段中的内容)。但为了做到这一点,我失去了任何绘图功能。基本上,我希望能够做到以下几点:

  • 加载图像
  • 在上面画线/圆圈/形状等
  • 放大(保留图像上的任何图形)
  • 多画
  • 无论出于什么原因,我都可以随意放大/缩小
  • 总之,缩放的大小调整是有效的。它是在缩放的每个阶段保留我似乎无法获得的任何附加图形

    下面是我的resize函数的代码片段(受前面引用的答案的影响很大):


    考虑提供一个说明你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应一步缩放从来都不是一个好主意,您需要降低缩放比例以获得更好的结果,以及您正在调整大小的图像是什么?如果它不是原始图像,而是您已经调整大小以缩小的图像,则放大该图像将获得像素化图像。您也必须根据链接的代码从原始图像调整大小。@谢谢您提供的“逐步缩小比例”链接。我去看看。不过我不能分享代码,因为虽然我在写代码,而且代码很粗糙,而且我主要使用它,但我受到体制限制的约束。然而@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();
    }