Java 给图片添加水印后没有exif信息了

华夏鹰 2012-06-14 04:08:48
从开源中国看到一段代码(http://www.oschina.net/code/snippet_116974_3309),用于给图片添加水印,测试后发现图片被压缩了,以前6M的照片变成2M了,但是图片的宽和高是没有改变的。而且图片的exif信息都清除了。
代码如下:
 /**
* 打印文字水印图片
* @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信息不变。请问那位仁兄有好一点的方法?
最好是有代码,有思路也可以
...全文
251 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
华夏鹰 2012-06-15
  • 打赏
  • 举报
回复
如果用图片的叠加,相当于把原图当做纸,我们再把水印写在上面的话,就不会改变原图的属性了。
宅男小何 2012-06-15
  • 打赏
  • 举报
回复
实在不行的话,可以先取出exif信息,加完水印后在写入吧
华夏鹰 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
http://kim.iteye.com/blog/45087
[/Quote]
这个是对图片没有压缩,而且在文件变大了一下,不过不要紧,问题是这个还是把exif信息去掉了,我估计只要用了drawImage方法后,就会这样,因为他没有把照片信息写入图片里面。谢谢
zqfddqr 2012-06-14
  • 打赏
  • 举报
回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧