以前也有这种情况,出现这种问题应该不是程序的问题,应该是图片格式的问题。
我试了一下,你把你的图片,再另存一个jpg,就不会出现这种问题了。
你的图应该是直接用bmp、gif之类的其它格式直接改个jpg的扩展名得来的。
如果你非要用你的图片来做出无问题的水纹的话,我没有时间做测试,不过你应该是用Graphics2D对象来加的水纹吧,而你的Graphics2D对象应该是通过Image构造来的吧,比如BufferedImage,反正我是用的BufferedImage。构造BufferedImage的时候,BufferedImage(int width, int height, int imageType),第三个参数是图片类型,BufferedImage.TYPE_INT_RGB是一般jpg图用的,你可以试试别的,有很多,你挨个试下,看看能不能解决。就算解决了,你再用回其它jpg文件时,可能又会出别的问题。还是推荐一开始写的,在图片上解决问题。
ImageIO.read()读取图片是产生的ICC信息的丢失
http://www.oschina.net/question/1092_23668
试了一下你的图片,我这里图片变成红的了,明白你说的现象了,试一下看能不能找到解决方案。