2016-11-22 2 views
1

Мое приложение позволяет пользователю загружать изображения и отправлять их в службу, которая затем преобразует их в другой формат и отправляет обратно. Мы добавляем поддержку формата файла SVG, и у меня возникает проблема с чтением файла из массива байтов.Как читать SVG-файл из потока с помощью MagickNet

Проблема в том, что когда я инициализировать объект MagickImageInfo с объектом SVG поток, я получаю эту ошибку:

«не расшифровывает делегат для этого формата изображения„“@ ошибка/blob.c/BlobToImage/355»

Я играл с ним и могу пройти мимо этой ошибки, если вместо этого создаю объект MagickImage и поставлю его экземпляром MagickReadSettings, где я явно задал формат в SVG.

Основная проблема заключается в том, что для кода MagickImage нужен намек относительно того, какой файл он имеет, когда это SVG. Для других типов файлов он, похоже, может определить, какой файл он есть. Однако, хотя я могу предоставить класс MagickImage в каком формате файл, класс MagickImageInfo не имеет параметров, которые я могу дать ему, чтобы намекнуть на тип файла.

Одним из возможных решений является запись файла на диск, а затем класс MagickImageInfo считывает файл с диска, но я действительно не хочу этого делать, так как он усложняет работу службы и заставляет ее зависеть от записи на диск доступ.

Соответствующий код:

Рабочий код:

var readSettings = new MagickReadSettings() { Format = MagickFormat.Svg }; 
using (MagickImage image = new MagickImage(stream, readSettings)) 
{ 
    image.Write("C:\test"); // Actual code doesn't write to disk 
} 

Не работает код:

MagickImageInfo info = new MagickImageInfo(stream); 

ответ

0

Похоже, что вы нашли недостающую функцию. Я нашел здесь ваше сообщение и добавил дополнительную перегрузку для конструктора MagickImageInfo. Ниже будут доступны в Magick.NET 7.0.3.9 и выше:

var readSettings = new MagickReadSettings() { Format = MagickFormat.Svg }; 
MagickImageInfo info = new MagickImageInfo(stream, readSettings); 

Вы можете открыть вопрос в следующий раз здесь: https://github.com/dlemstra/Magick.NET или здесь: https://magick.codeplex.com/discussions

Смежные вопросы