AiQinZi 2014-01-16 02:19 采纳率: 0%
浏览 2525

C#图片以流的形式加水印

用流读取的图片,我在上面加了文字水印。 但是我要怎么控制水印的位置,比如说我要加到右下角。应该怎么算坐标?(同一个坐标 。jpg格式跟tif格式位置不一样。)下面是我的代码:
///
/// 图片加水印
///
/// 图片路径
/// 字体
/// 字体大小
/// 水印位置
/// 水印文字
/// 存储图片的文件夹
public void AddWaterText(string oldPath,string font,int fontSize,string wntType,string Text,string directory)
{

            Byte[] photo = getImageByte(oldPath);
            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;
            switch (wntType)
            {
                case "WMP_Left_Top":
                    xpos = 10;
                    ypos = 10;
                    break;
                case "WMP_Right_Top":
                    xpos = pic.Width - 10;
                    ypos = 10;
                    break;
                case "WMP_Right_Bottom":
                    xpos = pic.Width - 10;
                    ypos = pic.Height - 10;
                    break;
                case "WMP_Left_Bottom":
                    xpos = 10;
                    ypos = pic.Height - 10;
                    break;
                case "WM_ZJ":
                    xpos = pic.Width / 2;
                    ypos = pic.Height / 2;
                    break;
            }
            grap.DrawString(Text, new Font(font, fontSize), brush, xpos, ypos);//给图片(pic)加水印

            grap.Dispose();
            string fileName = oldPath.Substring(oldPath.LastIndexOf("\\") + 1);
            string SavePath = "C:\\ImageAddWaterMark\\" + fileName;

            if (!Directory.Exists("C:\\ImageAddWaterMark"))
            {
                Directory.CreateDirectory("C:\\ImageAddWaterMark");
            }

            pic.Save(SavePath, System.Drawing.Imaging.ImageFormat.Jpeg);//将有水印的图片保存到临时文件夹
            pic.Dispose();

            if (File.Exists(oldPath))
            {
                File.Delete(oldPath);
            }
            File.Move(SavePath,oldPath);

}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
    • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
    • ¥30 3天&7天&&15天&销量如何统计同一行
    • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
    • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型