2013-05-28 68 views
1

我正在使用另一個stackoverflow問題上找到的代碼的一個變體,以便在指定位置從較大的圖像中裁剪一個矩形。但每次莊稼時都會得到正確的寬度和高度,但圖像顯示爲黑色。從一個較大的圖像中裁剪一個矩形

How to crop an image in vb.net?

*面是一個預定義的矩形對象。

Dim OrignalImage = Image.FromFile("C:\fileName.jpg") 

      Dim CropImage = New Bitmap(face.Width, face.Height) 
      Using grp = Graphics.FromImage(OrignalImage) 
       grp.DrawImage(OrignalImage, OrignalImage.Width, OrignalImage.Height, face, GraphicsUnit.Pixel) 
       OrignalImage.Dispose() 
       CropImage.Save("C:\newfile.jpg") 
       grp.Dispose() 
      End Using 
+0

它看起來像你有所需大小創建'CropImage'對象,但從來不告訴你'的DrawImage()'的圖像適用於它。所以當你保存'CropImage'時它只是空白。 –

回答

2

你從OriginalImage創建Graphics對象。你需要從你的CropImage創建它。

另外,您不需要撥打grp.Dispose(),因爲Using塊會爲您做到這一點。

更正代碼:

Using OrignalImage = Image.FromFile("C:\fileName.jpg") 
Using CropImage = New Bitmap(face.Width, face.Height) 
    Using grp = Graphics.FromImage(CropImage) 
     grp.DrawImage(
      OrignalImage, 0, 0, 
      face, GraphicsUnit.Pixel) 
    End Using 
    CropImage.Save("C:\newfile.jpg") 
End Using 
End Using 
+0

我試過你的代碼,仍然是同樣的問題... – Peter

+0

你對'DrawImage'的使用也可能不正確,但是如果沒有更多的信息,我不可能告訴你。你想做什麼?你有一個很大的圖像(fileName.jpg)和一個矩形在該圖像(臉部),你正試圖創建一個新的裁剪圖像(newfile.jpg),其中包含源圖像的指定部分?如果這是你想要的,試試我編輯的代碼。 –

+0

謝謝!最後一個問題是,如果我想稍微擴大矩形的面積,我會在哪裏進行調整?到'face.width'和'face.height'? – Peter