最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.Net?Core基于ImageSharp實現(xiàn)圖片縮放與裁剪

 更新時間:2022年06月18日 09:20:13   作者:程序設(shè)計實驗室  
這篇文章介紹了.Net?Core基于ImageSharp實現(xiàn)圖片縮放與裁剪的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

最近在做博客的時候,需要實現(xiàn)一個類似Lorempixel、LoremPicsum這樣的隨機(jī)圖片功能,圖片有了,還需要一個根據(jù)輸入的寬度高度獲取圖片的功能,由于之前處理圖片時使用到了ImageSharp庫,所以這次我立刻就想到用它。

分析需求

圖片庫中的圖片基本都是我之前收集的壁紙什么的,尺寸參差不齊,有橫屏的也有豎屏

然后包裝成接口只需要輸入寬度和高度,就能隨機(jī)選一張圖片然后進(jìn)行縮放或者裁剪

我的思路是:

  • 橫屏圖片,將高度調(diào)整到與輸入高度一致,寬度按比例調(diào)整
  • 豎屏圖片,將寬度調(diào)整到與輸入高度一致,高度按比例調(diào)整

然后再選取中間部分進(jìn)行截取

當(dāng)然還有特殊情況,就是輸入的寬度和高度超過圖片原來高度寬度的情況,這個只能破壞圖片原有的比例,強(qiáng)行進(jìn)行拉伸~

PS:本來想畫個圖表達(dá)一下思路,不過沒找到趁手的畫圖工具(Draw.io:不要看我)

實現(xiàn)

首先讀取圖片

很簡單,傳入圖片路徑即可

當(dāng)然也可以用流的方式讀取

using var image = Image.Load("imagePath");

然后就是根據(jù)圖片的大小各種情況來進(jìn)行縮放和裁剪

在網(wǎng)上查到的很多博客用的代碼都是類似image.Resizeimage.Crop之類的,但這是舊版的ImageSharp代碼

新版全都放在image.Mutate里,要什么操作再傳入lambda表達(dá)式

(有點像ORM的操作)

比如縮放就是這樣

image.Mutate(a => a.Resize(newWidth, newHeight));

裁剪就是這樣

image.Mutate(a => a.Crop(new Rectangle(x, y, width, height)));

完整代碼

功能很簡單,完整代碼在此

void GetImage(string imagePath, int width, int height) {
    using var image = Image.Load(imagePath);
    Rectangle cropRect;
    int newWidth;
    int newHeight;
    
    // 橫屏圖片
    if (image.Width > image.Height) {
        if (width > image.Width) {
            newWidth = width;
            newHeight = height;
        }
        else {
            newHeight = height;
            newWidth = image.Width / image.Height * newHeight;
        }

        cropRect = new Rectangle((newWidth - width) / 2, 0, width, height);
    }
    // 豎屏圖片
    else {
        if (height > image.Height) {
            newWidth = width;
            newHeight = height;
        }
        else {
            newWidth = width;
            newHeight = newWidth * image.Height / image.Width;
        }

        cropRect = new Rectangle(0, (newHeight - height) / 2, width, height);
    }

    image.Mutate(a => a.Resize(newWidth, newHeight));
    image.Mutate(a => a.Crop(cropRect));
    image.SaveAsPng("output.png");
}

參考資料

到此這篇關(guān)于.Net Core基于ImageSharp實現(xiàn)圖片縮放與裁剪的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

扎鲁特旗| 土默特右旗| 明星| 黄平县| 马关县| 剑河县| 苏尼特左旗| 深州市| 收藏| 布尔津县| 安西县| 阳山县| 苍梧县| 富锦市| 拜城县| 邓州市| 台南县| 凤凰县| 买车| 南皮县| 永丰县| 旅游| 鄂温| 宁德市| 温宿县| 华亭县| 普陀区| 蒲城县| 乌拉特中旗| 济南市| 武穴市| 永平县| 泊头市| 阳江市| 临江市| 化德县| 龙山县| 舒兰市| 阿勒泰市| 永德县| 肇源县|