Я работаю над веб-инструментом обработки изображений, используя кроппер. 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);
}
}
}
}
}
}
Если есть какая-либо другая информация, которая вам нужна, пожалуйста, дайте мне знать.
Как мне решить эту проблему?