如何在ASP.NET Core中给上传图片功能添加水印实例代码

2025-05-29 0 34

前言

因某些原因需要在图片上添加文字水印、图片水印,所以这里做个简单的记录。下面话不多说了,来一起看看详细的实现过程吧

实现方法:

在传统的.NET框架中,我们给图片添加水印有的是通过HttpModules或者是HttpHandler,然后可以通过以下代码添加水印:

?

1

2

3

4

5
var image = new WebImage(imageBytes);

image.AddTextWatermark(

Settings.Instance.WatermarkText, "White", Settings.Instance.WatermarkFontSize,

opacity: Settings.Instance.WatermarkTextOpacityPercentage

);

但是在.NET Core中不允许你这么干了,因为没有WebImage这个类型了。在现在的.NET Core中我们都是通过IFormFile来上传文件,这包含了很多格式,那我们试一下吧。

首先我们一定要知道,我们要把图片保存到什么地方,我们在.NET Core中获取项目目录需要最基本的构造函数,如以下定义:

?

1

2

3

4

5

6

7
public readonly ILogger<ImageController> Logger = null;

private IHostingEnvironment hostingEnv;

public ImageController(ILogger<ImageController> logger,IHostingEnvironment env)

{

Logger = logger;

this.hostingEnv = env;

}

由于可以扩展使用下简单的日志框架,我们也可以把微软那套的日志框架给构造进来。.NET Core添加水印的代码可以这么写。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
// Add watermark

var watermarkedStream = new MemoryStream();

using (var img = Image.FromStream(stream))

{

using (var graphic = Graphics.FromImage(img))

{

var font = new Font(FontFamily.GenericSansSerif, 20, FontStyle.Bold, GraphicsUnit.Pixel);

var color = Color.FromArgb(128, 255, 255, 255);

var brush = new SolidBrush(color);

var point = new Point(img.Width - 120, img.Height - 30);

graphic.DrawString("cnblogs.com/zaranet", font, brush, point);

img.Save(watermarkedStream, ImageFormat.Png);

}

img.Save(hostingEnv.WebRootPath+"/"+name);

}

这里把传过来的内存流变成了Image也就是Bitmap,然后我们通过了graphic类的方法,变成了可修改的graphic类型,其中的方法大概有200多个。也就是画画~

其中的完整代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49
[HttpPost]

public async Task<IActionResult> UploadImageAsync(IFormFile file)

{

try

{

if (null == file)

{

Logger.LogError("file is null.");

return BadRequest();

}

if (file.Length > 0)

{

var name = Path.GetFileName(file.FileName);

if (name != null)

{

using (var stream = new MemoryStream())

{

await file.CopyToAsync(stream);

// Add watermark

var watermarkedStream = new MemoryStream();

using (var img = Image.FromStream(stream))

{

using (var graphic = Graphics.FromImage(img))

{

var font = new Font(FontFamily.GenericSansSerif, 20, FontStyle.Bold, GraphicsUnit.Pixel);

var color = Color.FromArgb(128, 255, 255, 255);

var brush = new SolidBrush(color);

var point = new Point(img.Width - 120, img.Height - 30);

graphic.DrawString("cnblogs.com/zaranet", font, brush, point);

img.Save(watermarkedStream, ImageFormat.Png);

}

img.Save(hostingEnv.WebRootPath+"/"+name);

}

return StatusCode(StatusCodes.Status200OK);

}

}

}

return BadRequest();

}

catch (Exception e)

{

Logger.LogError(e, $"Error uploading image.");

return StatusCode(StatusCodes.Status500InternalServerError);

}

}

最后,你可以使用PostMan进行测试。

如何在ASP.NET Core中给上传图片功能添加水印实例代码

Key要是你参数的名称,然后图片最后就成了这个样子。

如何在ASP.NET Core中给上传图片功能添加水印实例代码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。

原文链接:https://www.cnblogs.com/ZaraNet/p/10401124.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 如何在ASP.NET Core中给上传图片功能添加水印实例代码 https://www.kuaiidc.com/98198.html

相关文章

发表评论
暂无评论