如何在.net 5中保存添加水印文本的GIF



我尝试使用下面的代码,将水印文本添加到捕获的GIF帧。当我将源图像保存为ImageFormat.Gif时,它没有效果。如果我将其保存为ImageFormat.Jpeg,它会保存添加水印的最后一帧。

是否有一种方法来实现这一点,或者更好地使用外部库包?

using (var img = Image.FromStream(memoryStream))
{
int numberOfFrames = img.GetFrameCount(FrameDimension.Time);
Image[] frames = new Image[numberOfFrames];
for (int i = 0; i < numberOfFrames; i++)
{
img.SelectActiveFrame(FrameDimension.Time, i);
frames[i] = (Image)img;
using (var graphic = Graphics.FromImage(frames[i]))
{
var font = new Font(FontFamily.GenericMonospace, 16, FontStyle.Bold, GraphicsUnit.Pixel);
var color = Color.Black;
var brush = new SolidBrush(color);
var point = new Point(2, 2);
graphic.DrawString("Example text as watermark", font, brush, point);
}
}
//img.Save(newStream, ImageFormat.Jpeg);
img.Save(newStream, ImageFormat.Gif);
}
tempFileUri = $"data:{format};base64,{Convert.ToBase64String(newStream.ToArray())}";

我刚刚在&quot中添加了一个水印。. NET 5项目;使用第三方库:https://github.com/LazZiya/ImageResize.

我使用了github页面上提供的代码示例,它立即工作。

using(var img = Image.FromFile(@"wwwrootimagesimage-file.jpg"))
{
var tOps = new TextWatermarkOptions
{
// Change text color and opacity
// Text opacity range depends on Color's alpha channel (0 - 255)
TextColor = Color.FromArgb(50, Color.White),

// Add text outline
// Outline color opacity range depends on Color's alpha channel (0 - 255)
OutlineColor = Color.FromArgb(255, Color.Black),
// Change image watermark location
Location = TargetSpot.BottomRight
};

img.AddTextWatermark("This is some watermark text!", tOps)
.SaveAs(@"wwwrootimagesnew-image.jpg");
}

注意,要更改文本的位置,可以在TextWatermarkOptions类中设置Location属性。在上面的代码中,它被设置为BottomRight,但这可以是Center

通过nuget安装这个包:

Install-Package LazZiya.ImageResize

现在可以使用动画gif了:)

目前在v4.0.0-preview1中可用,可以像Image文件一样使用,唯一的区别是使用AnimatedImage而不是Image,如下所示:

PM > Install-Package LazZiya.ImageResize -Pre

Add -Pre安装最新预览版

加载动画图像并按如下方式编辑:

using LazZiya.ImageResize.Animated;
using(var img = AnimatedImage.FromFile("wwwroot/images/animated-image-file.gif"))
{    
img.AddTextWatermark("This is some watermark text!")
.SaveAs("wwwroot/images/new-animated-image.gif");
}

详情请参阅文档

最新更新