【问题标题】:Watermark not drawing in image水印未在图像中绘制
【发布时间】:2016-12-20 16:32:12
【问题描述】:

我遇到了一个错误: 不能从具有索引像素格式的图像创建图形对象

所以我在我的方法中实现了这段代码:Solution for "A Graphics Object cannot be Created from an Image that has an Indexed Pixel Format"

但现在我的水印不想在我的图像上绘制。

请任何人提供帮助。

代码:

private Image AddWaterMark(Image original)
{
    Image waterMark = Image.FromFile(ConfigurationManager.AppSettings["GalleryFolder"] + @"\watermark.png");
    Bitmap bm = (Bitmap)original;

    Size waterMarkResize = ResizeFit(new Size(original.Width, original.Height));

    using (Image watermarkImage = new Bitmap(waterMark, waterMarkResize))
    using (Graphics imageGraphics = Graphics.FromImage(new Bitmap(bm.Width, bm.Height)))
    {
        imageGraphics.DrawImage(bm, new Rectangle(0, 0, bm.Width, bm.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel);
        using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
        {
            int x = (original.Width / 2 - watermarkImage.Width / 2);
            int y = (original.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)));
        }
    }

    return bm;
}

【问题讨论】:

  • 您有任何错误吗?如果您将 watermarkBrush 更改为纯白色(或黑色)画笔怎么办?那你看到什么了吗?
  • 没有错误。它保存图像但没有水印。尝试使用黑白画笔仍然没有在图像上创建任何内容。

标签: c# gdi+


【解决方案1】:

您正在创建一个新的Bitmap 以传递给Graphics.FromImage,然后返回未经编辑的原始Bitmap。独立创建新的Bitmap,将其传递给FromImage,然后返回新的Bitmap

var edit = new Bitmap(bm.Width, bm.Height);
// ...
using (Graphics imagesGraphics = Graphics.FromImage(edit))
{
    // draw original
    // draw watermark
}
return edit;

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多