1. 程式人生 > >C# 拼接兩張圖片

C# 拼接兩張圖片

需要引用System.Drawing,使用Image,Bitmap,Graphics
可以理解為Image是需要拼接的圖片,Bitmap是畫布,Graphics是畫板
流程通俗的講也就是準備好需要拼接的圖片,畫板上鋪上畫布,選好畫布底色,把圖片放到畫布上,儲存畫布
之前在網上查詢相關拼接資料,基本是根據座標按點繪製,我這裡整理了另外一種比較簡潔的拼接法,30行程式碼左右完成

            Image img1 = Image.FromFile("‪F:\\1.png");
            Bitmap map1 = new Bitmap(img1);
            Image img2 = Image.FromFile("F:\\2.jpg");
            Bitmap map2 = new Bitmap(img2);
            var width = Math.Max(img1.Width, img2.Width);
            var height = img1.Height + img2.Height + 10;
            // 初始化畫布(最終的拼圖畫布)並設定寬高
            Bitmap bitMap = new Bitmap(width, height);
            // 初始化畫板
            Graphics g1 = Graphics.FromImage(bitMap);
            // 將畫布塗為白色(底部顏色可自行設定)
            g1.FillRectangle(Brushes.White, new Rectangle(0, 0, width, height));
            //在x=0,y=0處畫上圖一
            g1.DrawImage(map1, 0, 0, img1.Width, img1.Height);
            //在x=0,y在圖一往下10畫素處畫上圖二
            g1.DrawImage(map2, 0, img1.Height + 10, img2.Width, img2.Height);
            map1.Dispose();
            map2.Dispose();
            Image img = bitMap;
            //儲存
            img.Save("f:\\3.jpg");

以上是所有拼接程式碼,是最簡單的2圖拼接,可以根據需求進行多圖擴充套件和圖片大小畫素的調整。
供剛接觸Drawing的大家參考~

另外,在寫此方法時,遇到一個詭異的問題。
開始的時候圖片死活載入不上,後面重新敲了一遍就可以了…
如下圖報錯,img4和img3都可以正常執行,img1會報不支援給定路徑的格式
但是img3和img1寫法上沒有什麼區別,搞不懂,有沒有大神告訴我為什麼…