我一直在关注如何使用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);
}
答案 0 :(得分:4)
我设法最终解决了这个问题。问题是,我实际上调用了我的函数'ImageReizer'的名称,它在后端的App Service Plan中创建了一个具有该名称的文件夹。问题是,因为它与NugetPackage的'ImageResizer'具有相同的名称,所以它变得困惑并且在项目文件夹中查找而不是同名的包文件夹。
我使用不同的名称(ImageManipulation)重建了该函数,现在一切都按预期工作。
答案 1 :(得分:1)
由于某些原因,您的 nuget包恢复未正确发生。使用与上面完全相同的代码,我能够成功编译这个函数。
您可以通过“触摸” project.json 文件来强制重新启动程序包。只需进行编辑并保存即可,您应该看到恢复发生。在您的功能的“开发”页面上,选择“查看文件”,选择project.json文件并编辑/保存。在日志窗口中,您应该再次看到还原。
答案 2 :(得分: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。