2016-04-21 176 views
1

我想用C#裁剪圖像,但我有一些問題。裁剪圖像C#沒有背景

我需要裁剪這張圖片並從頂部15個像素:enter image description here

我已經使用這個代碼:

Bitmap myBitmap = new Bitmap(outputFileName); 
Rectangle destRectangle = new Rectangle(new Point(0, 15), new Size(myBitmap.Width, myBitmap.Height)); 
Bitmap bmp = new Bitmap(myBitmap.Width, myBitmap.Height); 
Graphics g = Graphics.FromImage(bmp); 
g.DrawImage(myBitmap, 0, 0, destRectangle, GraphicsUnit.Pixel); 
bmp.Save(outputFileNameCut, ImageFormat.Jpeg); 

outputFileName是第一個圖像的路徑和outputFileNameCut路徑爲新圖片。它工作正常,但是當我保存圖像,保存的圖像是這樣:

enter image description here

似乎也是質量比較少。無論是圖像的.jpg

謝謝

+0

不要對這樣的圖像使用JPG。對於像條形碼這樣的東西,PNG是無損和完美的。也就是說,你不是裁剪 - 你正在重新調整。您還需要使用源矩形來裁剪圖像。 – Luaan

+0

當你說'莊稼'時,你的意思是'刪除左側和右側的空白'?此外,它看起來像你沒有解決你的合成矩形高度的變化。不應該是myBitmap.Height - 15? – ManoDestra

+0

我用過png,但是我總是有一個無損的質量 – Ale

回答

2

使用此代碼來代替:

Bitmap myBitmap = new Bitmap(outputFileName); 
Rectangle destRectangle = new Rectangle(new Point(0, 15), 
new Size(myBitmap.Width, myBitmap.Height)); 
Bitmap bmp = new Bitmap(myBitmap.Width, myBitmap.Height - 15); 
Graphics g = Graphics.FromImage(bmp); 
g.DrawImage(myBitmap, 0, 0, destRectangle, GraphicsUnit.Pixel); 
bmp.Save(outputFileNameCut, ImageFormat.Jpeg); 

在一個側面說明,這可能使條形碼無效使用。因爲您正在修改和調整圖像大小,可能會在某種程度上干擾某些掃描儀。