我需要捕捉我桌面上的一个区域。但我需要这个区域的分辨率非常高(比如,至少水平方向有几千像素,垂直方向也是如此)。有可能得到一个高密度像素的屏幕截图吗?我怎样才能做到这一点呢?我试着用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);
}
你不能收集比源头更多的信息。
这是一个基本的真理,它确实适用于这里,太.所以你不能捕捉更多的1920x1080像素在他们的颜色深度。
OTOH,既然你想把捕捉到的图像输入OCR,那么还有一些事情需要考虑,事实上也需要做。
OCR是非常高兴,如果你帮助它通过优化图像。这应该包括
有趣的是,这将有助于OCR,虽然真实信息不能增加到原始来源之上。但一个好的调整大小的算法会增加 发明 数据,而这些往往正是OCR软件所需要的。
当你把图像存储到一个文件中时,你也应该注意使用一个好的即无损的格式,如 png
或 tif
而从未 jpg
.
最好的方法要通过试错来调整,直到OCR效果足够好。
提示:由于字体抗锯齿的原因,截图上的大部分文字都会被彩色像素的光晕所包围。通过降低甚至去除饱和度来摆脱它是一种方法,也许你想在显示属性中关闭它?(请查看 ClearType
!)