Azure Functions 的图像调整器问题
Image Resizer issue with Azure Functions
我一直在关注有关如何使用 ImageResizer 调整图像大小的教程,以侦听 Azure Functions 中的 blob 存储触发器。但是,我收到以下错误消息:
error CS0246: The type or namespace name 'ImageResizer' could not be
found (are you missing a using directive or an assembly reference?)
error CS0246: The type or namespace name 'ImageResizer' could not be
found (are you missing a using directive or an assembly reference?)
error CS0103: The name 'ImageResizer' does not exist in the current
context
我的 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);
}
由于某种原因,您的 nuget 包恢复 似乎没有正常进行。使用与上面完全相同的代码,我能够成功编译此函数。
您可以通过 "touching" 您的 project.json 文件强制再次进行包恢复。只需进行编辑并保存,您应该就会看到恢复。在函数的“开发”页面上,select "View Files"、select project.json 文件和 edit/save。在您的日志中 window 您应该会再次看到恢复。
最后我设法解决了这个问题。问题是,我实际上调用了我的函数的名称 'ImageReizer',它在后端的 App Service Plan 中创建了一个具有该名称的文件夹。问题是,因为它与 NugetPackage 'ImageResizer' 同名,所以它变得混乱并在项目文件夹而不是同名包文件夹中查找。
我用不同的名称 (ImageManipulation) 重建了该函数,现在一切正常。
如果您在 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 门户正在使用哪个运行时版本,在“概述”选项卡下选择 "Function app settings"。运行时版本可以是 ~1 或 ~2。
我一直在关注有关如何使用 ImageResizer 调整图像大小的教程,以侦听 Azure Functions 中的 blob 存储触发器。但是,我收到以下错误消息:
error CS0246: The type or namespace name 'ImageResizer' could not be found (are you missing a using directive or an assembly reference?)
error CS0246: The type or namespace name 'ImageResizer' could not be found (are you missing a using directive or an assembly reference?)
error CS0103: The name 'ImageResizer' does not exist in the current context
我的 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);
}
由于某种原因,您的 nuget 包恢复 似乎没有正常进行。使用与上面完全相同的代码,我能够成功编译此函数。
您可以通过 "touching" 您的 project.json 文件强制再次进行包恢复。只需进行编辑并保存,您应该就会看到恢复。在函数的“开发”页面上,select "View Files"、select project.json 文件和 edit/save。在您的日志中 window 您应该会再次看到恢复。
最后我设法解决了这个问题。问题是,我实际上调用了我的函数的名称 'ImageReizer',它在后端的 App Service Plan 中创建了一个具有该名称的文件夹。问题是,因为它与 NugetPackage 'ImageResizer' 同名,所以它变得混乱并在项目文件夹而不是同名包文件夹中查找。
我用不同的名称 (ImageManipulation) 重建了该函数,现在一切正常。
如果您在 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 门户正在使用哪个运行时版本,在“概述”选项卡下选择 "Function app settings"。运行时版本可以是 ~1 或 ~2。