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