编辑 找到解决方案:请参阅下面的帖子。
我们正在编写一个从扫描程序读取TIF文件的库。基本上,它是一台扫描仪。我们正在研究它的形式和阅读价值。
目前我们有一个Windows测试应用程序,我们给它一个文件路径作为字符串(“c:\ testing \ image.tif”)。它加载tif,正确读取文档并解析值。
我们还有一个ASP.NET Web应用程序。我们有一个测试页面,它完全执行windows应用程序的功能,我们将它交给一个相同的字符串,然后我从同一个库中调用相同类的相同函数。但是它没有正确读取表格。我们已经验证它确实加载了tif文件,它实际上填充了数据(当我们检查Visual Studio的即时窗口中的Bitmap对象时,我们期望白色/黑色的像素是白色/黑色)。 / p>
具体问题出在一个名为 DataMatrix 的库中,我们用它来扫描文档中的条形码。该函数应返回List<string>,
,每个{1}}是库在文档上找到的条形码。在Windows应用程序中,此函数(DataMatrixDecoder.DecodeBarcode(位图))正确返回Count = 1。使用asp.net应用程序时,返回Count = 0。
因为它的图像文件完全相同,我无法想象问题出现在DataMatrix中。我只能用ASP.NET或其他东西来假设它。
这甚至不是我的项目,但另一个人和我正在帮助我们的同事解决这个问题,我们只是把头发拉出来。所有迹象都表明ASP.NET正确加载并将图像从磁盘上交给“处理器”类(这是一个使用DataMatrix东西的类库,我们没有在ASP.NET中执行任何代码,除了打开/处理归档到函数。)。
有没有人知道它可能是什么,或者我们可以检查不同的东西?
我甚至不确定要提供什么样的信息所以我试着说出来,如果你有任何问题请问我会非常乐意详细说明任何事情。感谢。
编辑: 这是ascx.cs代码隐藏的代码,在按钮单击事件中:
if (formReader.ReadTIFF(@"c:\testing\image.tif"))
{
messages.Controls.Add(HtmlHelper.DivSuccess("Read successful."));
}
formReader
类然后使用FileStream
打开文件,并使用它创建Bitmap
。 ASP.NET应用程序实际上并没有打开文件(我们通过FormUpload
控件上传它,但在遇到问题之后我们将其归结为此问题)。这是最令人困惑的事情,它适用于Windows应用程序,但不适用于此网站。 ASP.NET拥有该文件夹的完全权限,可以执行任何操作。它可以很好地打开图像,它从FileStream创建的位图就是实际的图像。
编辑:此外,ReadTIFF函数现在将FileStream复制到MemoryStream中,确保从磁盘流式传输不是问题(整个文件在内存中)。
答案 0 :(得分:0)
如何将文件路径传递给Web应用程序?
解码的功能可能会吞下一些异常。
使用反射器检查库(如果你还没有写过)。
答案 1 :(得分:0)
我同意。您的问题似乎很可能与您尝试访问文件的目录上的用户权限有关。尝试为您的Web用户提供源目录的完全访问权限。
答案 2 :(得分:0)
修改强>
找到解决方案:问题是打开文件对话框正在更改CurrentWorkingDirectory。网站从未工作的原因是因为Environment.CurrentDirectory
设置不正确。当我手动将CurrentDirectory设置为网站的bin
文件夹时,解析工作正常。
小更新。使用Windows应用程序并通过OpenFileDialog
选择文件将导致条形码解码器失败。从技术上讲,我使用 exact 相同的字符串交给解析器(“c:\ testing \ image.tif”),但是当我使用OpenFileDialog
获取字符串时,解码器失败。这有什么线索吗?
更新:事实上,即使我不使用OpenFileDialog
给我的字符串,如果我只是打开的文件对话框,它也会失败。我不懂。这很简单。我需要调试C ++ DataMatrix库。