Java裁剪不同分辨率图像的特定部分

Posted

技术标签:

【中文标题】Java裁剪不同分辨率图像的特定部分【英文标题】:Java crop specific part of different resolution images 【发布时间】:2017-12-17 18:24:41 【问题描述】:

我希望通过 java 获取图像的特定部分。 我有 11 张不同分辨率的图片。

如果我们以this 为例图片

我要提取this部分

这是我的代码

try 
        BufferedImage originalImgage = ImageIO.read(new File("bin\\" + backImage[randNum]));                    

        BufferedImage SubImgage = originalImgage.getSubimage((originalImgage.getWidth()/2) - 340 , originalImgage.getHeight() - 70, 700, 70);                   
        System.out.println("" + (originalImgage.getWidth()/2 - 700));
        ImageIO.write(SubImgage, "png", new File("bin\\gauLock.png"));                                  

     catch (IOException e) 
        e.printStackTrace();
               

如你所见,高度不是问题,但宽度是因为分辨率不同

所以我的问题是如何获得所有图像的特定部分

【问题讨论】:

“如您所见,高度不是问题” - 不是吗?不管分辨率是多少,你都可以得到 70 像素吗? 【参考方案1】:

考虑一下您想要的图像数量占整个图像的一小部分。如果您想要水平图像的中间 50%,无论分辨率如何,这都可以:

    BufferedImage SubImgage = originalImgage.getSubimage((originalImgage.getWidth()/4), originalImgage.getHeight() - 70, originalImage.getWidth()/2, 70);
    System.out.println("" + (originalImgage.getWidth()/2 - 700));

【讨论】:

以上是关于Java裁剪不同分辨率图像的特定部分的主要内容,如果未能解决你的问题,请参考以下文章

将位图裁剪为特定的宽度和高度,而不会丢失分辨率

根据android中的矩形坐标裁剪捕获的图像

如何在不同大小的矩形中裁剪相同的 ROI

如何在不更改 C#.Net 中的分辨率的情况下裁剪图像?

如何将 UIImage 调整为特定大小

特定分辨率的可绘制文件夹的不同图像大小