白色条,然后文字水印
本文关键字:文字 然后 白色 | 更新日期: 2023-09-27 18:18:51
我想为图像应用水印。
目前,我正试图使用此代码,但它在不同大小的图像上失败:
public void AddWaterMark(string filePath, string watermarkText)
{
Image img = Image.FromFile(
MapPath(GlobalVariables.UploadPath + "/" + filePath));
Graphics gr = Graphics.FromImage(img);
Font font = new Font("Alial Black", 40);
Color color = Color.FromArgb(50, 241, 235, 105);
StringFormat stringFormat = new StringFormat
{
Alignment = StringAlignment.Near,
LineAlignment = StringAlignment.Near
};
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.DrawString(watermarkText, font, new SolidBrush(color),
new Point(20, img.Height - 60), stringFormat);
img.Save(MapPath(GlobalVariables.UploadPath + "/w_" + filePath));
}
有时字体会从底部掉下来。我希望它是图像底部的文本
我如何确保它不会从底部掉下来?
另外,我想稍微加强一下。我想在图像的整个底部创建一个白色但透明的条,然后在它上面写黑色的文字。这在绘画中可能吗?因此,在图像的底部有一个横条,可能高60像素,在60px的中间,我想要写文字(左对齐)。
我也发现文本移动,取决于文件大小
这是一个有效的图像:http://www.listerhome.com/fulldisplay.aspx?imageid=100055
但有时,当我上传更高分辨率的图像时,我得到这个:http://www.listerhome.com/fulldisplay.aspx?imageid=100060
可以使用MeasureString
函数计算字符串大小。
SizeF stringSize = gr.MeasureString(watermarkText, font, img.Width - 40);
gr.DrawString(watermarkText, font, new SolidBrush(color),
new RectangleF(20, img.Height - stringSize.Height, img.Width - 40, stringSize.Height),
stringFormat);