参考地址:https://bbs.youkuaiyun.com/topics/390695085?list=lz
调用方法
WriteBytesToFileWaterMark("文件地址+图片名称", GetBytesFromUrl("网络图片URL"), "水印内容");
//例
WriteBytesToFileWaterMark("E:\2.png", GetBytesFromUrl("https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg"), "水印内容");
添加水印方法
/// <summary>
/// 通过url获取到图片
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static byte[] GetBytesFromUrl(string url)
{
try
{
byte[] b;
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
WebResponse myResp = myReq.GetResponse();
Stream stream = myResp.GetResponseStream();
using (BinaryReader br = new BinaryReader(stream))
{
b = br.ReadBytes((int)myResp.ContentLength);
br.Close();
}
myResp.Close();
return b;
}
catch (Exception e)
{
byte[] b = new byte[0] { };
return b;
}
}
/// <summary>
/// 保存图片
/// </summary>
/// <param name="fileName"></param>
/// <param name="content"></param>
public static void WriteBytesToFile(string fileName, byte[] content)
{
try
{
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter w = new BinaryWriter(fs);
try
{
w.Write(content);
}
finally
{
fs.Close();
w.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
/// <summary>
/// 保存水印图片
/// </summary>
/// <param name="fileName">地址+文件名称</param>
/// <param name="content">图片流</param>
/// <param name="watermark">水印文字</param>
public static void WriteBytesToFileWaterMark(string fileName, byte[] content, string watermark)
{
try
{
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter w = new BinaryWriter(fs);
try
{
Byte[] photo = content;
MemoryStream stmBLOB = new MemoryStream(photo);
Image pic = Image.FromStream(stmBLOB);
Graphics grap = Graphics.FromImage(pic);
Brush brush = new SolidBrush(Color.Red);//创建一把刷子
int xpos = 10;
int ypos = 10;
grap.DrawString(watermark, new Font("宋体", 80), brush, xpos, ypos);//给图片(pic)加水印,(水印文字,
grap.Dispose();
var filenameImg = "13.png";
pic.Save(filenameImg, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] img=PhotoImageInsert(pic);
w.Write(img);
pic.Dispose();
}
finally
{
fs.Close();
w.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
/// <summary>
/// 将Image转换成流数据,并保存为byte[]
/// </summary>
/// <param name="imgPhoto"></param>
/// <returns></returns>
public static byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
{
try
{
MemoryStream mstream = new MemoryStream();
imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] byData = new Byte[mstream.Length];
mstream.Position = 0;
mstream.Read(byData, 0, byData.Length); mstream.Close();
return byData;
}
catch (Exception e)
{
Console.WriteLine(e);
byte[] ret = new byte[1];
return ret;
}
}