2013-05-28 3 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

Вы создаете свой Graphics объект из OriginalImage. Вам нужно создать его с вашего 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

Смежные вопросы