绘制文字水印需按图片短边3%5%动态计算字号并校正DPI启用AntiAliasGridFit抗锯齿用Alpha控制透明度Logo叠加须确保PNG带Alpha通道、保持宽高比缩放并及时DisposeJPEG保存需指定高质量编码器与sRGB配置批量处理须全程显式释放资源。用 Graphics 绘制文字水印时字体缩放容易失真直接用 Graphics.DrawString 往原图上画文字看似简单但常见问题是小图上文字糊成一片、大图上又细得看不清。根本原因是没做 DPI 适配和字体大小归一化。别硬写固定字号比如 new Font(Arial, 12)改用相对尺寸按图片短边的 3%5% 计算字号再用 graphics.DpiX 和 DpiY 校正开启抗锯齿graphics.TextRenderingHint TextRenderingHint.AntiAliasGridFit否则中文边缘毛刺明显文字透明度靠 Color.FromArgb(100, 0, 0, 0) 控制 Alpha 值别用 Brushes.Gray 这类不透明预设记得调用 graphics.TranslateTransform() 配合旋转否则斜水印会切掉边缘叠加 Logo 图片水印必须处理透明通道和缩放比例直接 Graphics.DrawImage 贴 PNG Logo常出现白底、锯齿、拉伸变形——本质是没区分图像类型和像素格式。源 Logo 必须是带 Alpha 通道的 PNG加载后检查 logo.PixelFormat 是否含 Format32bppArgb缩放不用 DrawImage(destRect) 粗暴拉伸改用 DrawImage(logosrc, destRect, srcRect, GraphicsUnit.Pixel) 并手动计算 srcRect 保持宽高比避免内存泄漏Logo Bitmap 实例用完立即 Dispose()尤其在循环加水印时如果目标图是 JPEG叠加前先转成 PixelFormat.Format32bppArgb否则透明区域会变黑Image.Save 保存时质量丢失严重保存后的水印图发灰、文字边缘泛白、Logo 边缘有光晕——八成是 JPEG 编码质量或颜色空间没控住。 幻导航网 发现优质实用网站,开启网络探索之旅