0

我正在使用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);
                    }
                }
            }
        }
    }
}

如果您需要任何其他信息,请告诉我。

我该如何解决这个问题?

4

0 回答 0