1. 程式人生 > >c#從大圖擷取一部分圖片

c#從大圖擷取一部分圖片

public static void CaptureImage(string sFromFilePath, string saveFilePath, int width, int height, int spaceX, int spaceY)
        {
            //載入底圖   
            Image fromImage = Image.FromFile(sFromFilePath);
            int x = 0;   //擷取X座標   
            int y = 0;   //擷取Y座標   
            //原圖寬與生成圖片寬   之差       
            //當小於0(即原圖寬小於要生成的圖)時,新圖寬度為較小者   即原圖寬度   X座標則為0     
            //當大於0(即原圖寬大於要生成的圖)時,新圖寬度為設定值   即width         X座標則為   sX與spaceX之間較小者   
            //Y方向同理   
            int sX = fromImage.Width - width;
            int sY = fromImage.Height - height;
            if (sX > 0)
            {
                x = sX > spaceX ? spaceX : sX;
            }
            else
            {
                width = fromImage.Width;
            }
            if (sY > 0)
            {
                y = sY > spaceY ? spaceY : sY;
            }
            else
            {
                height = fromImage.Height;
            }


            //建立新圖點陣圖   
            Bitmap bitmap = new Bitmap(width, height);
            //建立作圖區域   
            Graphics graphic = Graphics.FromImage(bitmap);
            //擷取原圖相應區域寫入作圖區   
            graphic.DrawImage(fromImage, 0, 0, new Rectangle(x, y, width, height), GraphicsUnit.Point);
            //從作圖區生成新圖   
            Image saveImage = Image.FromHbitmap(bitmap.GetHbitmap());
            //儲存圖象   
            saveImage.Save(saveFilePath, ImageFormat.Jpeg);
            //釋放資源   
            saveImage.Dispose();
            bitmap.Dispose();
            graphic.Dispose();
        }