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

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

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

瀏覽:425日期: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久久,三上悠亚国产精品一区二区三区
99pao成人国产永久免费视频 | 日韩高清在线观看一区二区| 欧美肉体xxxx裸体137大胆| 91青青国产在线观看精品| 久久久久伊人| 国产中文在线播放| 免费人成精品欧美精品| 亚洲精品第一| 日本视频中文字幕一区二区三区| 日韩精品免费视频一区二区三区| 三级欧美在线一区| 日韩av电影一区| 欧美激情一区| 婷婷综合在线| 国产日韩一区二区三区在线| 加勒比视频一区| 99视频精品| 老司机精品视频网| 一区二区视频欧美| 久久不卡日韩美女| 女同性一区二区三区人了人一 | 久久不见久久见国语| 99久久久久久中文字幕一区| 国产综合色产| 日韩毛片在线| 欧美亚洲免费| 日韩视频二区| 青青青免费在线视频| 亚洲乱码视频| 日韩视频一区| 日韩.com| 久久国产人妖系列| 热久久久久久久| 欧美成人基地| 欧美交a欧美精品喷水| 麻豆亚洲精品| 久久亚洲专区| 91视频一区| 欧美偷窥清纯综合图区| 另类专区亚洲| 久久69成人| 久久av中文| 亚洲性图久久| 国产精品啊啊啊| 69堂免费精品视频在线播放| 一本色道精品久久一区二区三区| 国产精品xxx| 欧美私人啪啪vps| 综合激情在线| 午夜一区在线| 噜噜噜躁狠狠躁狠狠精品视频| 麻豆精品蜜桃| 欧美a级片一区| 欧美一区二区性| 久久丁香四色| 久久久久久婷| 婷婷激情一区| 午夜av成人| 91久久亚洲| 五月国产精品| 国产精品99久久免费| 日韩不卡免费高清视频| 色一区二区三区四区| 精品国产美女a久久9999| 精品美女视频| 国产超碰精品| 午夜影院欧美| 四虎在线精品| 国产亚洲字幕| 国产欧美88| 精品国产美女a久久9999| 日本一区二区高清不卡| 国产91精品对白在线播放| 久久国产99| 国产精品亚洲综合在线观看| 精品国产一区二区三区2021| 精精国产xxxx视频在线播放| 国产免费成人| 国产精品巨作av| 亚洲福利专区| 欧美日韩一区二区三区不卡视频 | 综合激情网...| 18国产精品| 午夜免费一区| 国产精品porn| 在线一区电影| 激情综合五月| 中文字幕av一区二区三区人| 风间由美中文字幕在线看视频国产欧美| 色婷婷久久久| 欧美视频久久| 中文精品视频| 成人精品中文字幕| 欧美影院精品| 香蕉久久夜色精品国产| 精品国产亚洲一区二区三区大结局| 国产精品99视频| 中文无码久久精品| 日韩国产激情| 国产精品中文字幕制服诱惑| 一区二区视频欧美| 亚洲三级欧美| 国产精品一区二区免费福利视频| 女同性一区二区三区人了人一| 国产福利一区二区三区在线播放| 亚洲欧美视频| 视频一区中文| 激情欧美日韩一区| 成人亚洲一区| 精品国产精品久久一区免费式 | 国产视频久久| 999精品色在线播放| 国产成年精品| 久久亚洲人体| 国产精品亚洲片在线播放| 日韩精品乱码av一区二区| 视频在线观看一区| 久久不射网站| 中文字幕日韩欧美精品高清在线| 国产韩日影视精品| 激情久久五月| 亚洲一区二区三区免费在线观看| 欧美性感美女一区二区 | 欧美成a人国产精品高清乱码在线观看片在线观看久 | 免费国产亚洲视频| 欧美福利一区| 91国语精品自产拍| 亚洲性视频h| 欧美91精品| 香蕉久久国产| 亚洲人成亚洲精品| 日韩av中文字幕一区| 日韩国产一区二| 中文字幕中文字幕精品| 在线观看一区| 国产调教一区二区三区| 国产精品99久久免费| 欧美aa在线观看| 成人精品中文字幕| 亚洲一区二区日韩| 欧美午夜三级| 久久久久网站| 国产精品99免费看| 亚洲免费一区二区| 日韩欧美久久| 精品视频网站| 亚洲国产不卡| 亚洲欧美专区| 日韩和欧美一区二区| 国产亚洲一区| 日韩欧美精品| 天堂精品久久久久| 欧美激情福利| 美女网站一区| 亚洲a级精品| 麻豆精品视频在线观看视频| 伊人久久大香线蕉av不卡| 丝袜美腿亚洲一区二区图片| 日韩**一区毛片| 正在播放日韩精品| 免费精品视频最新在线| 成人在线超碰| 五月国产精品| 久久一区欧美| 亚洲一区欧美激情| 中文字幕在线视频网站| 免费久久99精品国产| 国产精品jk白丝蜜臀av小说| 亚洲一级影院| 精品91福利视频| 国产亚洲精aa在线看 | 一区二区国产在线| 日本在线高清| 国产调教一区二区三区| 精品中文字幕一区二区三区av| 久久99精品久久久野外观看| 女人天堂亚洲aⅴ在线观看| 日本v片在线高清不卡在线观看| 日韩理论片av| 精品国产亚洲一区二区三区大结局| 免费观看在线综合| 极品日韩av| 成人午夜国产| 麻豆mv在线观看| 精品九九在线| 国产精品日本一区二区不卡视频| 免费国产自线拍一欧美视频| 精品丝袜在线| 日韩国产一区二区三区| 国产 日韩 欧美 综合 一区| 日韩av网站在线观看| 亚洲综合图色| 欧美特黄一级| 日韩午夜在线| 美女久久网站| 亚洲精品在线二区| 日韩和欧美一区二区| 亚洲精选91| 91九色综合| 欧美精品国产白浆久久久久|