我正在使用cropper.js 和ImageProcessor 开发基于Web 的图像处理工具。我有一个 AJAX 调用,它将cropper.js 数据传递给 C# 处理程序,然后该数据被传递给 ImageProcessor 并 - 理论上 - 用于裁剪图像并保存它。
当我通过 Visual Studio 在本地运行它时,实际发生的是 AJAX 调用返回 500 异常,并且我在“事件”选项卡下的“诊断”面板中看到以下错误消息:
无法从程序集“ImageProcessor,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”加载类型“ImageProcessor.Imaging.CropLayer”。
ImageProcessor 已通过 NuGet 包管理器正确安装在我的解决方案的两个项目中 - 实际的 Web 应用程序和 Web 应用程序项目中引用的名为 Middle 的类库。处理程序包含在 Middle。如果我删除所有引用 ImageProcessor 的代码,处理程序不会引发异常。
我不知道是什么原因造成的。我试过用谷歌搜索这个问题,但我能找到的答案都没有帮助我。这个问题建议输入完整的命名空间,但我试过了,但并没有解决问题。对此的评论建议清除我的 bin 和 obj 文件夹,清理并重建解决方案,但这也不起作用。
这是我的 C# 处理程序到目前为止的样子(我无法完成它,直到我知道我到目前为止是否有效,但由于我遇到的问题我无法正确测试它)。
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);
}
}
}
}
}
}
如果您需要任何其他信息,请告诉我。
我该如何解决这个问题?