c# - 自动为图像添加水印

标签 c# winforms algorithm image-processing

在互联网上搜索自动为图像添加水印的解决方案时,我在 stackoverflow 中找到了最佳解决方案。问题的链接是 C# - Add watermark to the photo by special way .特别感谢 Alex Maslakovadrift

我通过一些修改实现了该解决方案,我想将水印放在图像的中心。我将adrift提供的方案修改如下

   private void button1_Click(object sender, EventArgs e)
    {
        using (Image image = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"))
        using (Image watermarkImage = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\watermark.png"))
        using (Graphics imageGraphics = Graphics.FromImage(image))
        using (Brush watermarkBrush = new TextureBrush(watermarkImage))
        {
            int x = (image.Width - watermarkImage.Width)/2;
            int y = (image.Height - watermarkImage.Height)/2;
            imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), watermarkImage.Size));
            image.Save(@"C:\Users\Public\Pictures\Sample Pictures\Desert_watermark.jpg");
        }

    }

但水印没有正确放置在图像的中心(见下图)。

enter image description here

请指正我...

谢谢

最佳答案

终于找到了我的问题的答案...

正确的代码答案如下

    private void button1_Click(object sender, EventArgs e)
    {
        using (Image image = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"))
        using (Image watermarkImage = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\watermark.png"))
        using (Graphics imageGraphics = Graphics.FromImage(image))
        using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
        {
            int x = (image.Width / 2 - watermarkImage.Width / 2);
            int y = (image.Height / 2 - watermarkImage.Height / 2);
            watermarkBrush.TranslateTransform(x, y);
            imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width+1, watermarkImage.Height)));
            image.Save(@"C:\Users\Public\Pictures\Sample Pictures\Desert_watermark.jpg");
        }

    }

感谢 Furqan Safdar 和 Abdias Software 链接Problem in tiling image starting at different height using TextureBrush in C#也帮我解决了这个问题

谢谢大家

最终结果

enter image description here

关于c# - 自动为图像添加水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870137/

相关文章:

c# - 匹配源码关键词

c# - 表格申请的字体选择

c - 在二进制数中找到第一个 "1"

c# - XmlWriter 不会正确生成我需要的命名空间

c# - 处理 BigInteger 问题

c# - 将 C# 中的字符串(不是数字或日期)格式化为给定模式

c# - 使用线程显示表单

C# 动态表单(反射)-链接控件

java - 随机选择第k大元素

algorithm - 最小化使用雇佣问题的成本