我使用Magick.NET处理文件。现在我需要转换原始图像格式(如.dng,.3fr,.cr2,.raw,.ptx等)。为了在网站上生成预览,简单的jpg。我在documentation here中找到了示例,但它不起作用。我把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"有没有人遇到过这样的问题?我不知道为什么会发生这种狗屎。我为此浪费了很多时间,如果你能帮我解决这个问题,我将很高兴
发布于 2015-12-17 18:10:51
您必须使用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();
}问候马库斯
发布于 2016-07-18 15:47:33
这与文件流或实际物理路径无关。您可以使用物理路径调用MagickImage构造函数。您收到的问题和错误消息是您的代码找不到该文件。这可能是由于权限、传递文件地址的方式或任何阻止代码访问该文件的原因。另一件事是:将MagickImage转换为ByteArray非常耗时,并且在系统中是一个繁重的过程。如果你尝试一张20000像素的图像,你会看到结果。
https://stackoverflow.com/questions/32180816
复制相似问题