日期:2014-05-20  浏览次数:20751 次

Java 给图片添加水印后没有exif信息了
从开源中国看到一段代码(http://www.oschina.net/code/snippet_116974_3309),用于给图片添加水印,测试后发现图片被压缩了,以前6M的照片变成2M了,但是图片的宽和高是没有改变的。而且图片的exif信息都清除了。
代码如下:
Java code
 /**
     * 打印文字水印图片     
     * @param pressText
     *            --文字
     * @param targetImg --
     *            目标图片
     * @param fontName --
     *            字体名
     * @param fontStyle --
     *            字体样式
     * @param color --
     *            字体颜色
     * @param fontSize --
     *            字体大小
     * @param x --
     *            偏移量
     * @param y
     */

    public static void pressText(String pressText, String targetImg,
            String fontName, int fontStyle, int color, int fontSize, int x,
            int y) {
        try {
            File _file = new File(targetImg);
            Image src = ImageIO.read(_file);
            int wideth = src.getWidth(null);
            int height = src.getHeight(null);
            BufferedImage image = new BufferedImage(wideth, height,
                    BufferedImage.TYPE_INT_RGB);
            Graphics g = image.createGraphics();
            g.drawImage(src, 0, 0, wideth, height, null);
            
            g.setColor(Color.RED);
            g.setFont(new Font(fontName, fontStyle, fontSize));

            g.drawString(pressText, wideth - fontSize - x, height - fontSize
                    / 2 - y);
            g.dispose();
            FileOutputStream out = new FileOutputStream(targetImg);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(image);
            out.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

我希望图片的质量大小都不要压缩,而且要保存exif信息不变。请问那位仁兄有好一点的方法?
最好是有代码,有思路也可以

------解决方案--------------------
http://kim.iteye.com/blog/45087
------解决方案--------------------
实在不行的话,可以先取出exif信息,加完水印后在写入吧