正如问题评论中已经说明的那样,问题可能不是您的代码“错误”或者TIFF格式有任何特定的东西阻止了水印。
但是,TIFF是一种非常灵活的格式,可能包含RGB,CMYK,“深色”或浮点样本,以及简单的索引或双层图像数据。 我怀疑问题与后者有关(如果是这样,你会遇到与某些调色板PNG相同的问题),因为在这些情况下可能没有可以代表透明黑色的颜色。 但如果不进一步澄清,就不可能肯定地说。
通过创建完整的RGB内存映像,将原始图像绘制到该图像然后添加水印,可以轻松解决此类问题。 但这会大大改变输出文件和大小,我不知道这是否适用于您的用例。
无论如何,这是一个完整的工作示例,基于上面的代码和可验证的输入/输出文件:
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class WatermarkTest {
private static String watermarkText = "WaterMark!";
public static void main(St