Как использовать Magick.net для конвертации HttpPostedFile .heic в .jpg - PullRequest
0 голосов
/ 31 октября 2019

У меня есть веб-приложение .NET c #, которое позволяет пользователям загружать изображения. Я установил пакет Magick.NET NuGet. Я пытаюсь конвертировать загруженные файлы .heic в .jpg, но я не уверен, с чего начать.

Вот загрузка без Magick.net.

string fullPath = path + @"\Images\" + fileName;
Image image = Image.FromStream(postedFile.InputStream);

image.Save(path);

Вот что яЯ пытаюсь, но получаю следующую ошибку: Недопустимый параметр

string fullPath = path + @"\Images\" + fileName;
Bitmap bitmap = new Bitmap(postedFile.InputStream); <-- ERROR

using (MagickImage i = new MagickImage(bitmap))
{
    i.Format = MagickFormat.Jpg;

    using (MemoryStream memStream = new MemoryStream(i.ToByteArray()))
    {
        image = Image.FromStream(memStream);
    }
}

image.Save(path);

Вот еще один подход, аналогичный документации на Magick.net, но я получаю следующую ошибку: Попыткапо безопасности прозрачный метод доступа к безопасности критический метод не удалось. Сборка помечается атрибутом AllowPartiallyTrustedCallersAttribute и использует модель прозрачности безопасности уровня 2. Прозрачность уровня 2 приводит к тому, что все методы в сборках AllowPartiallyTrustedCallers становятся прозрачными для безопасности по умолчанию, что может быть причиной этого исключения.

string fullPath = path + @"\Images\" + fileName;
Stream fs = postedFile.InputStream;
BinaryReader br = new System.IO.BinaryReader(fs);
byte[] bytes = br.ReadBytes((Int32)fs.Length);

using (MemoryStream memStream = new MemoryStream())
{
    using (MagickImage i = new MagickImage(bytes)) <-- ERROR
    {
        i.Format = MagickFormat.Jpg;

        image = Image.FromStream(memStream);
    }
}

image.Save(path);

У кого-нибудь есть предложения?

...