<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      .NetCore實現圖片縮放與裁剪 - 基于ImageSharp

      前言

      (突然發現斷更有段時間了

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

      分析需求

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

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

      我的思路是:

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

      然后再選取中間部分進行截取

      當然還有特殊情況,就是輸入的寬度和高度超過圖片原來高度寬度的情況,這個只能破壞圖片原有的比例,強行進行拉伸~

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

      實現

      首先讀取圖片

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

      當然也可以用流的方式讀取

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

      然后就是根據圖片的大小各種情況來進行縮放和裁剪

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

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

      (有點像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");
      }
      

      后續在我的StarBlog開發筆記系列里,接下來會更新~

      參考資料

      posted @ 2022-06-17 23:28  程序設計實驗室  閱讀(1236)  評論(4)    收藏  舉報
      主站蜘蛛池模板: 欧美福利电影A在线播放 | 成人亚洲国产精品一区不卡| 大香网伊人久久综合网2020| 婷婷久久香蕉五月综合加勒比| 狠狠综合久久av一区二| 一区二区在线观看成人午夜| 人妻无码av中文系列久| 国产精品亚洲а∨天堂2021| 成人精品网一区二区三区| 五月天久久综合国产一区二区| 芮城县| 久久精品国产九一九九九| 老司机免费的精品视频| 日韩激情无码av一区二区| 国产日韩综合av在线| 蜜臀91精品高清国产福利| 国产成人精品亚洲午夜| 亚洲精品一区二区三区大桥未久| 中文字幕无线码在线观看| 中文人妻AV高清一区二区| 精品熟女少妇免费久久| 青青在线视频一区二区三区| 久久久久人妻精品一区三寸 | 久久精品视频一二三四区| 国产二区三区不卡免费| 2021久久精品国产99国产精品| 一区二区三区四区五区色| 一区二区中文字幕久久| 精品人妻系列无码一区二区三区| 97av| 99视频30精品视频在线观看| 亚洲精品久久一区二区三区四区| 午夜成人无码免费看网站| 国产精品久久国产丁香花| 无码国内精品人妻少妇| 精品久久久久久无码人妻蜜桃| 天堂av最新版中文在线| 亚洲中文字幕成人无码| 九九久久人妻精品一区色| 日本高清在线观看WWW色| 卓资县|