紀錄一下使用 C# 去寫 WINFORM 時所用的一些圖檔操作
首先是選擇檔案
1 | //開啟檔案的類別 |
2 | OpenFileDialog ofd = new OpenFileDialog(); |
3 | //預設開起的路徑 |
4 | ofd.InitialDirectory = @"D:\SCAN"; |
5 | //預設可以開啟的副檔名 |
6 | ofd.Filter = "(*.jpg,*.png,*.jpeg,*.bmp,*.gif,*.tif)|*.jpg;*.png;*.jpeg;*.bmp;*.gif;*.tif"; |
控制圖檔大小
1 | //要記得等比例縮放 |
2 | private Bitmap Resize(Bitmap originImage, int image_width, int image_height) |
3 | { |
4 | int width = Convert.ToInt32(600); |
5 | int height = (width * image_height) / image_width; |
6 | return Process(originImage, originImage.Width, originImage.Height, width, height); |
7 | } |
增加浮水印
1 | int x = 0; |
2 | int y = 0; |
3 | //浮水印的文字 |
4 | string sWaterMark = "浮水印"; |
5 | |
6 | //設定文字大小,此處是跟著圖片的寬度去設置文字的大小 |
7 | int FontSize = (Image.Width) / (sWaterMark.Length * 2); |
8 | |
9 | //x是浮水印由左往右的位置 |
10 | x = Convert.ToInt32(Image.Width / 2.8); |
11 | |
12 | //y是浮水印由下往上的位置 |
13 | y = Convert.ToInt32((x * image_height) / image_width / 3.9); |
14 | |
15 | //浮水印的文字所用的格式 |
16 | StringFormat DrawFormat = new StringFormat(); |
17 | DrawFormat.Alignment = StringAlignment.Center; |
18 | DrawFormat.FormatFlags = StringFormatFlags.NoWrap; |
19 | |
20 | //把浮水印到圖片上,solidBrush 是設定浮水印的文字顏色 |
21 | Graphics myGraphic = Graphics.FromImage(Image); |
22 | myGraphic.DrawString(sWaterMark, new Font("標楷體", FontSize, FontStyle.Bold), new SolidBrush(Color.FromArgb(255, 255, 0, 0)), x, y, DrawFormat); |
23 | } |
裁切圖片
1 | Image img = null; |
2 | //filename 是圖檔的名稱 |
3 | byte[] MyByte = System.IO.File.ReadAllBytes(filename); |
4 | using (MemoryStream ms = new MemoryStream(MyByte)) |
5 | { |
6 | img = Image.FromStream(ms); |
7 | } |
8 | Bitmap bitmap = (Bitmap)img; |
9 | //sWidth 跟 sHeight 是裁切後的大小 |
10 | Bitmap Mybmp = new Bitmap(sWidth, sHeight); |
11 | Graphics gr = Graphics.FromImage(Mybmp); |
12 | gr.Clear(Color.Transparent); |
13 | 把原始圖檔繪製成指定的大小 |
14 | gr.DrawImage(bitmap, new Rectangle(0, 0, Mybmp.Width, Mybmp.Height), 0, 0, sWidth, sHeight, GraphicsUnit.Pixel); |
15 | } |