C# - 使用高分辨率屏幕截图

问题描述 投票:-1回答:2

我需要捕捉我桌面上的一个区域。但我需要这个区域的分辨率非常高(比如,至少水平方向有几千像素,垂直方向也是如此)。有可能得到一个高密度像素的屏幕截图吗?我怎样才能做到这一点呢?我试着用AutoIt脚本捕捉屏幕,得到了一些非常好的结果(图像有350MB大),现在我想用C#做同样的事情。

编辑。

我正在对一个.tif文件进行这样的读写,它已经丢失了大部分数据。

using (Bitmap bitmap = (Bitmap)Image.FromFile(@"ScreenShot.tif")) //this file has 350MB
{
    using (Bitmap newBitmap = new Bitmap(bitmap))
    {
        newBitmap.Save("TESTRES.TIF", ImageFormat.Tiff); //now this file has about 60MB, Why?
    }
}

我试图像这样捕获我的屏幕,但我能得到的最好的数据是几兆字节(远没有达到350MB)。

using (var bmpScreenCapture = new Bitmap(window[2], window[3], PixelFormat.Format32bppArgb))
{
    using (var i = Graphics.FromImage(bmpScreenCapture))
    {
        i.InterpolationMode = InterpolationMode.High;

        i.CopyFromScreen(window[0], window[1], 0, 0, bmpScreenCapture.Size, CopyPixelOperation.SourceCopy);
    }
    bmpScreenCapture.Save("test2.tif", ImageFormat.Tiff);
}
c# image image-processing drawing ocr
2个回答
1
投票

你不能收集比源头更多的信息。

这是一个基本的真理,它确实适用于这里,太.所以你不能捕捉更多的1920x1080像素在他们的颜色深度。

OTOH,既然你想把捕捉到的图像输入OCR,那么还有一些事情需要考虑,事实上也需要做。

OCR是非常高兴,如果你帮助它通过优化图像。这应该包括

  • 浓淡相宜
  • 放大到建议的dpi分辨率
  • 烘托

有趣的是,这将有助于OCR,虽然真实信息不能增加到原始来源之上。但一个好的调整大小的算法会增加 发明 数据,而这些往往正是OCR软件所需要的。

当你把图像存储到一个文件中时,你也应该注意使用一个好的即无损的格式,如 pngtif 而从未 jpg.

最好的方法要通过试错来调整,直到OCR效果足够好。

提示:由于字体抗锯齿的原因,截图上的大部分文字都会被彩色像素的光晕所包围。通过降低甚至去除饱和度来摆脱它是一种方法,也许你想在显示属性中关闭它?(请查看 ClearType!)

© www.soinside.com 2019 - 2024. All rights reserved.