Мое приложение позволяет пользователю загружать изображения и отправлять их в службу, которая затем преобразует их в другой формат и отправляет обратно. Мы добавляем поддержку формата файла 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);