Не удалось загрузить тип 'ImageProcessor.Imaging.CropLayer' из сборки 'ImageProcessor' - PullRequest
0 голосов
/ 18 марта 2020

Я работаю над веб-инструментом обработки изображений, используя кроппер. js и ImageProcessor. У меня есть вызов AJAX, который передает данные обрезки. js в обработчик C#, где эти данные затем передаются в ImageProcessor и - теоретически - используются для обрезки изображения и его сохранения.

На самом деле, когда я запускаю его локально через Visual Studio, вызов AJAX возвращает исключение 500, и я вижу следующее сообщение об ошибке на панели «Диагностика» на вкладке «События»:

Не удалось загрузить тип 'ImageProcessor.Imaging.CropLayer' из сборки 'ImageProcessor, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null'.

ImageProcessor был установлен правильно через NuGet Диспетчер пакетов в обоих проектах моего решения - собственно веб-приложение и библиотека классов с именем Middle, на которую есть ссылка в проекте веб-приложения. Обработчик содержится в середине. Обработчик не выдает исключение, если я удаляю весь код, который ссылается на ImageProcessor.

Я понятия не имею, что может быть причиной этого. Я пытался найти проблему в Google, и ни один из ответов, которые я смог найти, не помог мне. Этот вопрос предлагает ввести полные пространства имен, но я попробовал это, и это не помогло решить проблему. В комментариях к этому предлагается очистить мои папки bin и obj, очистить и пересобрать решение, но это тоже не сработало.

Вот как выглядит мой обработчик C# далеко (я не могу закончить sh, пока не узнаю, работает ли то, что у меня есть до сих пор, но я не могу проверить это должным образом из-за проблемы, с которой я сталкиваюсь).

using ImageProcessor;
using ImageProcessor.Imaging;
using System;
using System.IO;
using System.Web;

namespace Middle
{
    public class CropImage : IHttpHandler
    {
        public bool IsReusable
        {
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {
            var x = float.Parse(context.Request["x"]);
            var y = float.Parse(context.Request["y"]);
            var width = float.Parse(context.Request["width"]);
            var height = float.Parse(context.Request["height"]);
            var cropLayer = new CropLayer(x, y, width, height);

            var filePath = AppDomain.CurrentDomain.BaseDirectory + context.Request["fileName"];
            var imageData = File.ReadAllBytes(filePath);

            using (MemoryStream inStream = new MemoryStream(imageData))
            {
                using (MemoryStream outStream = new MemoryStream())
                {
                    // Initialize the ImageFactory using the overload to preserve EXIF metadata.
                    using (ImageFactory imageFactory = new ImageFactory(preserveExifData: true))
                    {
                        // Load, resize, set the format and quality and save an image.
                        imageFactory.Load(inStream)
                                    .Crop(cropLayer)
                                    .Save(outStream);
                    }
                }
            }
        }
    }
}

Если есть какая-либо другая информация, которая вам нужна, пожалуйста, дайте мне знать.

Как мне решить эту проблему?

...