2015-08-24 1 views
1

Я использую Magick.NET для обработки файлов. И теперь мне нужно преобразовать формат необработанного изображения (например, .dng, .3fr, .cr2, .raw, .ptx и т. Д.) В простой jpg для создания предварительного просмотра на сайте. Я нашел пример в документации here , но он не работает. Я поставил dcraw.exe в Magick.NET длл, но всегда есть ошибки в данный момент:Magick.NET конвертировать необработанные изображения

//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" 

Кто-нибудь сталкивался с такой проблемой? Я понятия не имею, почему это дерьмо происходит. Я потратил много времени на это, и я буду рад, если вы поможете мне с этой проблемой

ответ

2

вы должны использовать объект 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

+0

oh человек спасибо !!! где ты был раньше ?! =) – Skiminock

+0

нашел это с аналогичной проблемой PHP, получив ту же ошибку. эквивалентно в php: \t $ handle = fopen ('C: \ DSC_0306.NEF', 'r'); \t $ im = новый Imagick(); \t $ im-> readImageFile ($ handle); – thydzik

0

Это не связано с потоком файла или реального физического пути. вы можете вызвать конструктор MagickImage с физическим путем. Проблема и сообщение об ошибке, которое вы получили, это то, что ваш код не может найти файл. Это может быть из-за разрешения или способа передачи адреса файла или любой вещи, которая мешает вашему коду достигнуть файла. Другим вещам: Преобразование MagickImage в ByteArray занимает много времени и является тяжелым процессом в системе. Если вы попробуете изображение с 20000 пикселами, вы увидите результат.