C#裁剪位图-克隆与图形
我注意到C#裁剪位图-克隆与图形,c#,image-processing,bitmap,tesseract,C#,Image Processing,Bitmap,Tesseract,我注意到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, imageToP
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);
及
无法生成完全相同的位图图像输出
问题是,图形方式比克隆方式快(0.05倍比s中的0.00倍) 但是 使用OCR的图形输出(使用Tesseract)不会给出结果。然而,克隆方法生成的相同位图给出了完美的结果。我想了解原因,因为图像属性和视觉似乎是相同的
输出和属性(克隆|图形)
“问题是,图形方式比克隆方式快”-不清楚您测量的时间和准确程度。您介意发布测试代码吗?这两个块正是我代码中的函数。我通过在矩形初始化之前存储
DateTime.UtcNow.milisteconds
来测量它们,并在每个块之后用旧的DateTime.UtcNow.milisteconds
减去新的DateTime.UtcNow.milisteconds
(但仍然在相同的函数中)。我想分享一个测试代码,但是,这两个生成的位图之间的唯一区别是tesseract OCR输出。你正在测量它。哦,是的,实际上!我仍然想理解为什么输出不同,您如何确定它们“没有产生完全相同的位图图像输出”?我从你的图像中剪下了两个片段,并将它们保存在gimp中,png文件是相同的。
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);
};