Azure功能的图像调整器问题

问题描述 投票:2回答:3

我一直在关注如何使用ImageResizer在Azure Functions中监听blob存储触发器来调整图像大小。但是,我收到以下错误消息:

错误CS0246:找不到类型或命名空间名称'ImageResizer'(您是否缺少using指令或程序集引用?)

错误CS0246:找不到类型或命名空间名称'ImageResizer'(您是否缺少using指令或程序集引用?)

错误CS0103:当前上下文中不存在名称“ImageResizer”

我的project.json配置已设置如下:

{
"frameworks": {
  "net46":{
    "dependencies": {
      "ImageResizer": "4.0.5"
    }
  }
 }
}

我的运行代码是:

#r "System.Drawing"
#r "System.Web"

using ImageResizer;
using System.Drawing;
using System.Drawing.Imaging;

public static void Run(Stream inputImage, string imageName, Stream outputImage, TraceWriter log)
{
    log.Info($"C# Blob trigger function Processed blob\n Name:{imageName} \n Size: {inputImage.Length} Bytes");

    var settings = new ImageResizer.ResizeSettings{
        MaxWidth = 400,
        Format = "jpg"
    };

    ImageResizer.ImageBuilder.Current.Build(inputImage, outputImage, settings);

}
image-processing azure-storage-blobs imageresizer azure-functions
3个回答
4
投票

我设法最终解决了这个问题。问题是,我实际上调用了我的函数'ImageReizer'的名称,它在后端的App Service Plan中创建了一个具有该名称的文件夹。问题是,因为它与NugetPackage'ImageResizer'具有相同的名称,所以它变得困惑并且在项目文件夹中查找而不是同名的包文件夹。

我用不同的名称(ImageManipulation)重建了这个函数,现在一切都按预期工作了。


1
投票

看起来由于某种原因你的nuget包恢复没有正确发生。使用与上面完全相同的代码,我能够成功编译此函数。

您可以通过“触摸”project.json文件来强制执行包恢复。只需进行编辑并保存即可,您应该看到恢复发生。在您的功能的“开发”页面上,选择“查看文件”,选择project.json文件并编辑/保存。在日志窗口中,您应该再次看到还原。


0
投票

如果您在版本2.x中使用Azure功能,则需要以不同的方式执行此操作。

创建一个新文件并将其命名为function.proj而不是project.json。以下是导入ImageResizer的示例:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="ImageResizer" Version="4.2.5" />
</ItemGroup>

您可以通过单击功能名称来检查Azure门户使用的运行时版本,在“概述”选项卡下选择“功能应用程序设置”。运行时版本可以是~1或~2。

© www.soinside.com 2019 - 2024. All rights reserved.