Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从TIF文件读取位图-适用于WinForms而不是ASP.NET_C#_Asp.net_Image - Fatal编程技术网

C# 从TIF文件读取位图-适用于WinForms而不是ASP.NET

C# 从TIF文件读取位图-适用于WinForms而不是ASP.NET,c#,asp.net,image,C#,Asp.net,Image,找到编辑解决方案:请参阅下面的我的帖子 我们正在编写一个从扫描仪读取TIF文件的库。基本上,这是一个扫描管。我们正在检查表单并从中读取值 目前我们有一个windows测试应用程序,我们给它一个文件路径作为字符串c:\testing\image.tif。它加载tif,正确读取文档并解析值 我们还有一个ASP.NET web应用程序。我们有一个测试页面,它与windows应用程序完全相同,我们给它一个相同的字符串,我从同一个库对同一个类调用同一个函数。但是,它没有正确阅读表格。我们已经验证了它确实加

找到编辑解决方案:请参阅下面的我的帖子

我们正在编写一个从扫描仪读取TIF文件的库。基本上,这是一个扫描管。我们正在检查表单并从中读取值

目前我们有一个windows测试应用程序,我们给它一个文件路径作为字符串c:\testing\image.tif。它加载tif,正确读取文档并解析值

我们还有一个ASP.NET web应用程序。我们有一个测试页面,它与windows应用程序完全相同,我们给它一个相同的字符串,我从同一个库对同一个类调用同一个函数。但是,它没有正确阅读表格。我们已经验证了它确实加载了tif文件,并且它实际上填充了数据像素。当我们在VisualStudio的即时窗口中检查位图对象时,我们希望这些像素是白/黑的

具体的问题是在一个名为DataMatrix的库中,我们用来扫描文档中的条形码。此函数应返回一个列表,每个列表都是库在文档上找到的条形码。在windows应用程序中,此函数DataMatrixDecoder.DecodeBarcodebitmap正确返回计数=1。使用asp.net应用程序时,返回的计数为0

因为它是完全相同的图像文件,我无法想象问题出在DataMatrix中。我只能假设它是ASP.NET之类的东西

这甚至不是我的项目,但我和另一个人正在帮助我们的同事解决这个问题,我们只是在开玩笑。所有迹象都表明ASP.NET正在正确地将映像从磁盘加载并传递到processor类,processor类是一个使用DataMatrix内容的类库,我们在ASP.NET中没有执行任何代码,除了打开/传递文件到函数

有没有人知道它可能是什么,或者我们可以检查哪些不同的东西

我甚至不知道该提供什么样的信息,所以我试着全部说出来,如果你有任何问题,请问我,我非常乐意详细说明。谢谢

编辑: 这是ascx.cs代码背后的代码,在按钮单击事件中:

if (formReader.ReadTIFF(@"c:\testing\image.tif"))
{
    messages.Controls.Add(HtmlHelper.DivSuccess("Read successful."));
}
然后formReader类用FileStream打开该文件,并使用该文件创建位图。ASP.NET应用程序实际上根本没有打开文件。我们是通过FormUpload控件上载文件的,但在遇到问题后,我们将其简化为此。这是最令人困惑的事情,它可以在windows应用程序中运行,但不能在这个网站上运行。ASP.NET对该文件夹拥有完全权限,可以执行其所需的任何操作。它可以很好地打开图像,它从文件流创建的位图就是实际的图像


编辑:另外,ReadTIFF函数现在将文件流复制到MemoryStream中,确保从磁盘流式传输整个文件在内存中不会出现问题。

如何将文件路径传递到web应用程序? 解码的函数可能正在吞咽某些异常


如果您还没有编写库,请使用reflector检查库。

我同意。看起来您的问题很可能与您试图从中访问文件的目录上的用户权限有关。尝试向Web用户授予对源目录的完全访问权限。

编辑 找到解决方案:问题是“打开文件”对话框正在更改CurrentWorkingDirectory。网站无法运行的原因是Environment.CurrentDirectory设置不正确。当我手动将CurrentDirectory设置为网站的bin文件夹时,解析工作正常

小更新。使用Windows应用程序并通过OpenFileDialog选择文件将导致条形码解码器失败。从技术上讲,我使用完全相同的字符串来传递给解析器c:\testing\image.tif,但是当我使用OpenFileDialog获取字符串时,解码器失败。这里面有线索吗


更新:事实上,即使我不使用OpenFileDialog给我的字符串,如果我只是打开文件对话框,它也会失败。我不明白。这很简单。我需要调试C++数据链库,真的。p> 这些图片公开得很好,我不相信这是一个权利问题。一旦我从MemoryStream获得位图,权限将不再适用。