首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >增强的图像裁剪

增强的图像裁剪
EN

Stack Overflow用户
提问于 2011-05-09 20:27:51
回答 2查看 3.3K关注 0票数 5

哪个是最好的java库来做cropping.The的目标是保持2倍的zoom.The裁剪图像的清晰度在缩放到2倍的水平时,裁剪图像的侧面变得模糊。我尝试了Java高级成像(JAI)来裁剪渲染提示。我还尝试了RescaleDescriptor(JAI)来增强image.But它只适用于白色background.Is中的黑色粒子。还有其他库可以使用吗?

EN

回答 2

Stack Overflow用户

发布于 2011-05-09 20:41:38

在使用外部库之前,尝试设置这些渲染提示(对于“普通”的swing渲染):

代码语言:javascript
运行
复制
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                   RenderingHints.VALUE_INTERPOLATION_BILINEAR); // or .._BICUBIC

g.setRenderingHint(RenderingHints.KEY_RENDERING,
                   RenderingHints.VALUE_RENDER_QUALITY);

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                   RenderingHints.VALUE_ANTIALIAS_ON);

下面的代码生成了这个屏幕截图:

代码语言:javascript
运行
复制
public static void main(String[] args) throws IOException {
    BufferedImage o = ImageIO.read(new URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png"));
    final BufferedImage image = o.getSubimage(220, 220, 80, 80);
    final int width  = image.getWidth() * 4;
    final int height = image.getHeight() * 4;

    JFrame frame = new JFrame("Test");
    frame.setLayout(new GridLayout(1, 2));

    frame.add(new JComponent() {
        public void paintComponent(Graphics g) {
            Graphics2D g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                                 RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
                                 RenderingHints.VALUE_RENDER_QUALITY);
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                 RenderingHints.VALUE_ANTIALIAS_ON);

            g2d.drawImage(image, 0, 0, width, height, null);
        }
    });
    frame.add(new JComponent() {
        public void paintComponent(Graphics g) {
            g.drawImage(image, 0, 0, width, height, null);
        }
    });

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(649, 351);
    frame.setVisible(true);
}
票数 4
EN

Stack Overflow用户

发布于 2011-05-09 20:32:52

我推荐ImageJ,这是一个很棒的图像处理库。

以下是裁剪的代码示例:

代码语言:javascript
运行
复制
ImageProcessor ip = //... get the image processor to crop
ip.setRoi(left,top,width,height); //set the "Region Of Interest" (rectangle within the image) 
ImageProcessor ip2 = ip.crop();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5936871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档