Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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# Magick.NET转换原始图像_C#_Asp.net_Asp.net Mvc_File Upload_Magick.net - Fatal编程技术网

C# Magick.NET转换原始图像

C# Magick.NET转换原始图像,c#,asp.net,asp.net-mvc,file-upload,magick.net,C#,Asp.net,Asp.net Mvc,File Upload,Magick.net,我使用它来处理文件。现在我需要将原始图像格式(如.dng、.3fr、.cr2、.raw、.ptx等)转换为简单的jpg,以便在站点上生成预览。我在文档中找到了一个例子 但它不起作用。我将dcraw.exe放入Magick.NET dll,但在这一刻总是出错: //code using (var originalImg = new MagickImage(abspath))... //text of error InnerException = {"iisexpress.exe: FailedTo

我使用它来处理文件。现在我需要将原始图像格式(如.dng、.3fr、.cr2、.raw、.ptx等)转换为简单的jpg,以便在站点上生成预览。我在文档中找到了一个例子 但它不起作用。我将dcraw.exe放入Magick.NET dll,但在这一刻总是出错:

//code
using (var originalImg = new MagickImage(abspath))...
//text of error
InnerException = {"iisexpress.exe: FailedToExecuteCommand `dcraw.exe -6 -w -O \"C:/Users/A8F50~1.CHE/AppData/Local/Temp/magick-29445L9OLy_DVIQq.ppm\" \"C:/Users/A8F50~1.CHE/AppData/Local/Temp/magick-294458yvxz2HRaYX\"' (-1) @ error/delegate.c/ExternalDelegateCommand/484"}
Message = "iisexpress.exe: UnableToOpenBlob 'C:/Users/A8F50~1.CHE/AppData/Local/Temp/magick-29445L9OLy_DVIQq.ppm': No such file or directory @ error/blob.c/OpenBlob/2684"

有人面临这样的问题吗?我不知道为什么会发生这种事。我为此浪费了很多时间,如果您能帮我解决这个问题,我会很高兴的

您必须使用FileStream对象,而不是文件路径。。。那对我有用

试试这个:

FileStream fileStream = new FileStream(@"C:\QRcodes\IMG_9540.CR2", FileMode.Open);

        using (MagickImage magickImage = new MagickImage(fileStream))
        {
            byte[] imageBytes = magickImage.ToByteArray();

            Console.WriteLine("bytes in image: " + imageBytes.Length);
            Console.ReadKey();
        }
问候
Markus

这与文件流或实际物理路径无关。可以使用物理路径调用MagickImage构造函数。问题和您收到的错误消息是,您的代码找不到该文件。这可能是因为您的权限、您传递文件地址的方式或任何阻止代码访问文件的因素。
另一方面:将MagickImage转换为ByteArray非常耗时,而且在系统中是一个繁重的过程。如果您尝试使用20000像素的图像,您将看到结果

发现类似的PHP问题,得到相同的错误。php中的等价物:$handle=fopen('C:\DSC_0306.NEF','r');$im=新的Imagick();$im->readImageFile($handle);