Я заметил странное поведение с функцией Graphics.DrawImage
при использовании для обрезки растрового изображения.
Те два образца
RectangleF area = new RectangleF();
area.X = X / ratio.X;
area.Y = Y / ratio.Y;
area.Width = W / ratio.X;
area.Height = H / ratio.Y;
// Clone way
var croppedBitmap = imageToProcess.Clone(area, imageToProcess.PixelFormat);
И
RectangleF area = new RectangleF();
area.X = X / ratio.X;
area.Y = Y / ratio.Y;
area.Width = W / ratio.X;
area.Height = H / ratio.Y;
// Graphics way
var croppedBitmapg = new Bitmap((int) area.Width, (int) area.Height);
using (Graphics g = Graphics.FromImage(croppedBitmapg))
{
g.DrawImage(imageToProcess, new Rectangle(0, 0, croppedBitmapg.Width, croppedBitmapg.Height), area, GraphicsUnit.Pixel);
};
Не выдает точно такой же вывод растрового изображения.
Дело в том, что графический способ быстрее, чем клон (0,05х против 0,00х с)
НО
Использование графического вывода для OCR (с Tesseract) не дает результатов. Тем не менее, тот же битовый массив, созданный методом Клона, дает отличный результат. Я хотел бы понять, почему, поскольку свойства изображения и изображения выглядят одинаково .
Выходы и свойства (клон | графика)