日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

.NET6使用ImageSharp實現給圖片添加水印

瀏覽:427日期:2022-06-09 09:21:59

.NET 6 中,使用System.Drawing操作圖片,生成解決方案或打包的時候,會有警告,意思是System.Drawing僅在 'windows' 上受支持。微軟官方的解釋是:

System.Drawing.Common NuGet 包現在被歸為 Windows 特定的庫。 在為非 Windows 操作系統編譯時,平臺分析器會在編譯時發出警告。

在非 Windows 操作系統上,除非設置了運行時配置開關,否則將引發 TypeInitializationException 異常,其中 PlatformNotSupportedException 作為內部異常

在 .NET 6 之前,使用 System.Drawing.Common 包不會產生任何編譯時警告,也不會引發任何運行時異常。

從 .NET 6 開始,當為非 Windows 操作系統編譯引用代碼時,平臺分析器會發出編譯時警告。

當然,使用windows操作系統沒有任何問題,Linux的話,需要單獨的配置。

可以通過在runtimeconfig.json文件中將System.Drawing.EnableUnixSupport 運行時配置開關設置為來啟用對 .NET 6 中的非 Windows 平臺的支持:true

或者使用第三方庫

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

正如標題,我使用了ImageSharp來操作圖片,并給圖片添加水印

//ImageFile為圖片物理路徑,如下方的注釋
public async Task<ImageResult> WaterMark(string ImageFile)
{
    ImageResult result = new ImageResult();
    //var ImageFile = "D:\www\wwwroot\upload\5176caebc1404caa8b0b350181ae28ab.jpg";
    var WaterMark = "D:\\www\\wwwroot\\watermark.png";
    string FileName = Guid.NewGuid().ToString("N") + ".jpg";
    string SavePath = "D:\\www\\wwwrootupload\\" + FileName;
    string imgurl = "/upload/"+FileName;
    //為了與System.Drawing.Common有所區別,引用使用全路徑
    using (var image = await SixLabors.ImageSharp.Image.LoadAsync(ImageFile))
    {
using (var clone = image.Clone(ctx => ctx.ApplyScalingImageWaterMark("center")))
{
    await clone.SaveAsync(SavePath);
}
result.width = image.Width;
result.height = image.Height;

result.url = imgurl;
result.format = ".jpg";
result.state = true;
    }
    return result;
}

代碼比較簡單,首先使用SixLabors.ImageSharp.Image.LoadAsync打開圖片,然后使用ImageSharp的自定義擴展方法給圖片添加水印。

ApplyScalingImageWaterMark擴展方法:

public static class ImageSharpExtention
{
    public static IImageProcessingContext ApplyScalingImageWaterMark(this IImageProcessingContext processingContext, string waterPosition = "center",string waterPath)
    {
 using (var mark_image = SixLabors.ImageSharp.Image.Load(waterPath))
    {
int markWidth = mark_image.Width;
int markHeight = mark_image.Height;

var imgSize = processingContext.GetCurrentSize();

if (markWidth >= imgSize.Width || markHeight >= imgSize.Height) //對水印圖片進行縮放
{
    if (imgSize.Width > imgSize.Height)//橫的長方形
    {
markWidth = imgSize.Width / 2; //寬縮放一半
markHeight = (markWidth * imgSize.Height) / imgSize.Width;
    }
    else
    {
markHeight = imgSize.Height / 2;
markWidth = (markHeight * imgSize.Width) / imgSize.Height;
    }
    mark_image.Mutate(mk => mk.Resize(markWidth, markHeight));
}
//水印圖片完成成立,開始根據位置添加水印
var position = waterPosition;
if (string.IsNullOrEmpty(position))
{
    position = "center";
}
position = position.ToLower();
if (string.IsNullOrEmpty(position))
{
    position = "center";
}
SixLabors.ImageSharp.Point point = new SixLabors.ImageSharp.Point();
//左上
if (position.Contains("lefttop"))
{
    point.X = 10;
    point.Y = 10;
}
//上中
if (position.Contains("topcenter"))
{
    point.X = (imgSize.Width - mark_image.Width) / 2;
    point.Y = 10;
}
//右上
if (position.Contains("righttop"))
{
    point.X = (imgSize.Width - mark_image.Width) - 10;
    point.Y = 10;
}
//右中
if (position.Contains("rightcenter"))
{
    point.X = (imgSize.Width - mark_image.Width) - 10;
    point.Y = (imgSize.Height - mark_image.Height) / 2;
}
//右下
if (position.Contains("rightbottom"))
{
    point.X = (imgSize.Width - mark_image.Width) - 10;
    point.Y = (imgSize.Height - mark_image.Height) - 10;
}
//下中
if (position.Contains("bottomcenter"))
{
    point.X = (imgSize.Width - mark_image.Width) / 2;
    point.Y = (imgSize.Height - mark_image.Height) - 10;
}
//左下
if (position.Contains("leftbottom"))
{
    point.X = 10;
    point.Y = (imgSize.Height - mark_image.Height) - 10;
}
//左中
if (position.Contains("leftcenter"))
{
    point.X = 10;
    point.Y = (imgSize.Height - mark_image.Height) / 2;
}
if (position.Contains("center"))
{
    point.X = (imgSize.Width - mark_image.Width) / 2;
    point.Y = (imgSize.Height - mark_image.Height) / 2;
}
float opacity=(float)0.8;//設置不透明度,0-1之間

//添加水印
return processingContext.DrawImage(mark_image,point,opacity);

    }
    }
}

ImageResult類:

public class ImageResult
    {
/// <summary>
/// 文件名
/// </summary>
public string id { get; set; }

/// <summary>
/// 文件大小
/// </summary>
public string size { get; set; }

/// <summary>
/// 文件路徑
/// </summary>
public string url { get; set; }

/// <summary>
/// 文件格式
/// </summary>
public string format { get; set; }

/// <summary>
/// 上傳狀態
/// </summary>
public bool state { get; set; }

/// <summary>
		/// 上傳消息
		/// </summary>
		public string msg { get; set; }

/// <summary>
/// 圖片寬
/// </summary>
public int width { get; set; }

/// <summary>
/// 圖片高
/// </summary>
public int height { get; set; }
    }

到此這篇關于.NET6使用ImageSharp實現給圖片添加水印的文章就介紹到這了,更多相關.NET ImageSharp圖片添加水印內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: ASP.NET
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲视频电影在线| 久久99伊人| 免费成人在线观看| 亚洲激情中文在线| 五月天久久网站| 中文一区二区| 一区二区不卡| 日韩欧美激情| 蜜臀久久99精品久久久画质超高清| 国内激情久久| av在线资源| 欧美/亚洲一区| 亚洲综合福利| 欧美日韩精品免费观看视频完整| 五月天久久久| 亚洲精品三级| 日本不卡视频一二三区| 久久久久久网| 国产精品99一区二区| 国产亚洲在线观看| 欧美一区91| 91日韩欧美| 中文字幕日韩亚洲| 国产精品伊人| 韩日一区二区三区| 欧美高清不卡| 青青在线精品| 久久久久午夜电影| 在线一区二区三区视频| 91欧美日韩| 日本欧美在线| 伊人久久大香线蕉av超碰演员| 99视频精品全部免费在线视频| 天堂久久一区| 亚洲精选av| 欧美aaaaaa午夜精品| 色老板在线视频一区二区| 亚洲精品97| 日韩av一区二区三区四区| av免费不卡国产观看| 三上悠亚国产精品一区二区三区| 激情自拍一区| 欧美成a人片免费观看久久五月天| 日韩一区电影| 欧美片网站免费| 欧美精选一区二区三区| 国产剧情一区二区在线观看| 91精品韩国| 欧美另类中文字幕| 999国产精品| 国产欧美丝祙| 一区二区小说| 国产专区精品| 日韩久久一区| 国产精品女主播一区二区三区| 91精品国产自产观看在线 | 日韩福利视频导航| 国产精品久久观看| 国产欧美一区二区三区精品观看 | 日韩福利在线观看| 欧美一区=区| 欧美va天堂在线| 福利一区二区| 色婷婷狠狠五月综合天色拍| 国产精品亲子伦av一区二区三区| 欧美日韩激情在线一区二区三区| 日韩在线看片| 91看片一区| 欧美日韩精品免费观看视完整| 欧美成人aaa| 精品久久97| 精品国产美女a久久9999| 美女视频黄免费的久久| 国产精品magnet| 久久国产乱子精品免费女| 天堂俺去俺来也www久久婷婷| 免费人成精品欧美精品| 日韩专区在线视频| 精品一区免费| 在线精品视频在线观看高清| 黄页网站一区| 日日夜夜免费精品| 欧美日韩一视频区二区| 国产精品久久| 欧美aa在线观看| 亚洲欧美日韩专区| 911亚洲精品| 久久精品国产亚洲aⅴ| 91视频一区| 午夜精品免费| 欧美午夜三级| 性欧美xxxx免费岛国不卡电影| 亚洲欧美日本日韩| 亚洲精品综合| 色婷婷色综合| 视频一区视频二区在线观看| 国产精品久久亚洲不卡| 精品一区二区三区中文字幕视频| 国产美女高潮在线| 亚洲日本在线观看视频| 精品国产亚洲一区二区三区大结局| 91精品啪在线观看国产18| 在线观看一区| av高清不卡| 在线观看视频免费一区二区三区| 精品亚洲免a| 蜜桃视频第一区免费观看| 国产午夜久久av| 欧美激情国产在线| 亚洲天堂av资源在线观看| 国产+成+人+亚洲欧洲在线| 99视频一区| 国产一区二区三区不卡av| 美女91精品| 欧美天堂视频| 国产精品mv在线观看| 欧美中文字幕一区二区| 青青伊人久久| 欧美日韩国产高清| 日本欧美国产| 国产欧美视频在线| 男人操女人的视频在线观看欧美| 在线手机中文字幕| 天堂av一区| 午夜亚洲一区| av亚洲在线观看| 免费av一区二区三区四区| 国产亚洲精品v| 欧美精品高清| 韩日一区二区| 国产精品亲子伦av一区二区三区| 久久在线免费| 三级精品视频| 成人国产精品一区二区网站| 蜜臀av一区二区三区| 欧美日韩免费观看一区=区三区| 日韩一区二区三区免费播放| 国产精品xxx在线观看| 日韩中文欧美在线| 韩国久久久久久| 欧美三级精品| 久久久久久色| 奇米亚洲欧美| 97精品资源在线观看| 亚洲综合激情在线| 中文一区一区三区免费在线观| 蜜桃视频在线网站| 日韩精品一区二区三区免费观影 | 欧美偷窥清纯综合图区| 亚洲一区网站| 亚洲精品三级| 国产精品99精品一区二区三区∴ | 九九精品调教| 午夜国产精品视频免费体验区| 午夜久久久久| 午夜欧美理论片| 日韩视频一区| 日本欧美久久久久免费播放网| 国产精品白丝久久av网站| 国产精品精品| 久久精品青草| 综合欧美精品| 桃色av一区二区| 亚洲精品一级二级三级| 午夜精品久久久久久久久久蜜桃| 老牛国产精品一区的观看方式| 国产九九精品| 99国产精品私拍| 黑人精品一区| 日本伊人午夜精品| 精品日产乱码久久久久久仙踪林| 在线成人直播| 国产精品美女在线观看直播| 国产在线欧美| 日本欧美大码aⅴ在线播放| 国产一区二区三区日韩精品 | 成人精品国产亚洲| 蜜臀久久99精品久久久久宅男 | 丝袜美腿亚洲一区二区图片| 婷婷五月色综合香五月| 一区二区小说| 国产精品调教| 中文一区二区| 免费av一区| 国产+成+人+亚洲欧洲在线| 老司机精品久久| 亚洲伊人精品酒店| 女同性一区二区三区人了人一| 国产欧美日韩在线观看视频| 2023国产精品久久久精品双| 国产日韩一区二区三免费高清| 国产综合亚洲精品一区二| 久久99久久人婷婷精品综合| 超级白嫩亚洲国产第一| 日韩精品福利一区二区三区| 久久精品资源| 色乱码一区二区三区网站| 欧美日韩黄网站| 日产欧产美韩系列久久99| 亚洲精品观看|