Обрезка растрового изображения дает пустое растровое изображение - PullRequest
2 голосов
/ 31 марта 2011

Я взял код отсюда (SO), который обрезает изображения. Я пробовал это на растровых изображениях, содержащих черный текст на белом шрифте. В результате я получаю полностью белый вывод без содержимого.

        // create new bitmap with desired size and same pixel format
        Bitmap croppedBitmap = new Bitmap(rect.Width, rect.Height, bitmap.PixelFormat);

        // create Graphics "wrapper" to draw into our new bitmap
        // "using" guarantees a call to gfx.Dispose()
        using (Graphics gfx = Graphics.FromImage(croppedBitmap))
        {
            // draw the wanted part of the original bitmap into the new bitmap
            gfx.DrawImage(bitmap, 0, 0, rect, GraphicsUnit.Pixel);
        }

        return croppedBitmap;

Есть предположения?

PS если я подрежаю краску, конечно, это работает

редактировать

Если я обрезаю мою фотографию, например, она работает ....

Приложение

Код:

Прямоугольники

        Rectangle 1: 8 50, 95, 80, 30 // invoice number
        Rectangle 2: 625, 778, 475, 22 // Total amount

CropImage ():

    public static Bitmap CropImage(Bitmap bitmap, Rectangle rect)
    {
        Bitmap croppedBitmap = new Bitmap(rect.Width, rect.Height, bitmap.PixelFormat);

        using (Graphics gfx = Graphics.FromImage(croppedBitmap))
        {
            gfx.DrawImage(bitmap, 0, 0, rect, GraphicsUnit.Pixel);
        }

        return croppedBitmap;
    }

Изображение: (Конфиденциальные данные скрыты, я оставил только ту часть, которую пытаюсь обрезать) http://img33.imageshack.us/img33/5703/modelx.png

1 Ответ

1 голос
/ 31 марта 2011

Фиксированный код:

    Rectangle rect = new Rectangle(625, 778, 475, 22);

    Bitmap bitmap = Bitmap.FromFile(@"C:\m.png") as Bitmap;

    Bitmap croppedBitmap = new Bitmap(bitmap, rect.Width, rect.Height);
    croppedBitmap.SetResolution(bitmap.HorizontalResolution, bitmap.VerticalResolution);

    using (Graphics gfx = Graphics.FromImage(croppedBitmap))
    {
        gfx.DrawImage(bitmap, 0, 0, rect, GraphicsUnit.Pixel);
    }

    croppedBitmap.Save(@"C:\m-1.png", System.Drawing.Imaging.ImageFormat.Png);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...