当前位置: 首页 > 面试题库 >

使用Java裁剪/修剪具有空白空间的JPG文件

和柏
2023-03-14
问题内容

是否有一个框架可以删除图像的空白区域(矩形)。我们很遗憾地从技术图纸中创建了图像缩略图。我们将PDF转换为SVG,然后转换为JPG。技术图纸通常很小,现在放在缩略图的左上角:

+---------+----------------------+
|         |                      |
| (image) |                      |
|         |                      |
+---------+                      |
|                                |
|                                |
|                                |
|                                |
|              (empty space)     |
|                                |
|                                |
+--------------------------------+

那么,如何轻松删除空白区域并缩小JPG文件?


问题答案:

如该线程所示,可以在JAI中完成。或者这是我刚刚编写的一些Java代码,可用于执行此操作:

public class TrimWhite {
    private BufferedImage img;

    public TrimWhite(File input) {
        try {
            img = ImageIO.read(input);
        } catch (IOException e) {
            throw new RuntimeException( "Problem reading image", e );
        }
    }

    public void trim() {
        int width  = getTrimmedWidth();
        int height = getTrimmedHeight();

        BufferedImage newImg = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        Graphics g = newImg.createGraphics();
        g.drawImage( img, 0, 0, null );
        img = newImg;
    }

    public void write(File f) {
        try {
            ImageIO.write(img, "bmp", f);
        } catch (IOException e) {
            throw new RuntimeException( "Problem writing image", e );
        }
    }

    private int getTrimmedWidth() {
        int height       = this.img.getHeight();
        int width        = this.img.getWidth();
        int trimmedWidth = 0;

        for(int i = 0; i < height; i++) {
            for(int j = width - 1; j >= 0; j--) {
                if(img.getRGB(j, i) != Color.WHITE.getRGB() &&
                        j > trimmedWidth) {
                    trimmedWidth = j;
                    break;
                }
            }
        }

        return trimmedWidth;
    }

    private int getTrimmedHeight() {
        int width         = this.img.getWidth();
        int height        = this.img.getHeight();
        int trimmedHeight = 0;

        for(int i = 0; i < width; i++) {
            for(int j = height - 1; j >= 0; j--) {
                if(img.getRGB(i, j) != Color.WHITE.getRGB() &&
                        j > trimmedHeight) {
                    trimmedHeight = j;
                    break;
                }
            }
        }

        return trimmedHeight;
    }

    public static void main(String[] args) {
        TrimWhite trim = new TrimWhite(new File("...\\someInput.bmp"));
        trim.trim();
        trim.write(new File("...\\someOutput.bmp"));
    }
}


 类似资料:
  • 本文向大家介绍JavaScript 修剪空白,包括了JavaScript 修剪空白的使用技巧和注意事项,需要的朋友参考一下 示例 要从字符串的边缘修剪空格,请使用String.prototype.trim: 许多JavaScript引擎(而非Internet Explorer)实现了非标准trimLeft和trimRight方法。目前,在该过程的第1阶段,有一项提议是标准化trimStart和tr

  • 问题内容: 是否有Python函数可以从字符串中修剪空白(空格和制表符)? 例如:→ 问题答案: 对于两侧的空格,请使用: 对于右侧的空格,请使用: 对于左侧的空格: 正如thedz所指出的,您可以提供一个参数来将任意字符剥离到以下任何函数中: 这将去除任何空间,,,或从左侧字符,右手侧,或该字符串的两侧。 上面的示例仅从字符串的左侧和右侧删除字符串。如果还要从字符串中间删除字符,请尝试: 那应该

  • 问题内容: 是否有Python函数可以从字符串中修剪空格(空格和制表符)? 例如: 问题答案: 两侧的空格: 右侧的空格: 左侧的空白: 正如thedz所指出的,你可以提供一个参数来将任意字符剥离到以下任何函数中: 这将去除任何空间,,或从左侧字符,右手侧,或该字符串的两侧。 上面的示例仅从字符串的左侧和右侧删除字符串。如果还要从字符串中间删除字符,请尝试: 那应该打印出来:

  • 问题内容: 是否可以在PHP中删除图像周围的空格? 注意:澄清一下,我的意思是像photoshops装饰功能。 谢谢。 问题答案: 要修剪所有空白,就像您所说的那样,围绕图像的有趣部分,首先我们找出“空白”在哪里停止,然后我们复制这些边界内的所有内容。 我的旧示例假设图像的所有侧面都具有相同的“边框”,只是为了澄清注释:)

  • 问题内容: 我有一个称为render_something的方法,该方法可以创建很多空白,例如: 结果可能是: 我实际上希望它是这样的: 速度有这样的东西吗? 问题答案: 我刚刚读了这篇关于Velocity Whitespace Gobbling的 文章,其中提出了一些变通方法,包括Line Line截断了Velocity Whitespace 。 这基本上建议通过在每行末尾添加注释来注释掉换行符。

  • 问题内容: [我已输入,我需要处理和丢弃所有的白色空间,包括非换空间的输入文件又名(您可以通过按生产它在记事本中,然后键入 从键盘的数字小键盘。)或任何其他形式的空白空间。我已经尝试过了,但是没有修剪。 我是否需要显式检查,然后是否有一种简便的方法来修剪Java中的所有空白? 问题答案: 虽然是一个不间断的空格(不想被视为空格的空格),但是您可以修剪字符串,同时使用简单的正则表达式保留字符串中的每