Azure 存储中跨多个容器的 Imageresizer

Imageresizer across multiple containers in azure storage

我正在将图像上传到项目中的 Azure Blob 存储。出于逻辑原因,我为每次上传创建一个新容器,以对内容进行分组。这个公园运作良好。现在我正在尝试设置 ImageResizer 以启用调整大小 :) 和其他一些东西。在所有示例中,它们都指向一个容器作为端点,但在我的例子中,我有多个动态容器,所以这不是一个选项。我的问题是是否有人知道它是否适用于我的情况,或者我是否需要重新考虑我存储图像的方式。

根据您的要求,您可以尝试利用 AzureReader2 来处理 Azure blob,以便从 Azure Blob 动态调整图像的大小。由于您有多个动态容器,您可以按照以下步骤配置 AzureReader2:

通过 NuGet 安装包

  • ImageResizer.WebConfig

  • ImageResizer.Plugins.AzureReader2

Web.config

<configSections>
    <section name="resizer" type="ImageResizer.ResizerSection" requirePermission="false" />
</configSections>

<resizer>
    <plugins>
      <add name="MvcRoutingShim" />
      <add name="AzureReader2"
           connectionString="{your-storage-connectionstring}"
           prefix="~/cloud/" />
    </plugins>
</resizer>

<system.web>
    <httpModules>
      <add name="ImageResizingModule" type="ImageResizer.InterceptModule" />
    </httpModules>
</system.web>

<system.webServer>
    <modules>
      <add name="ImageResizingModule" type="ImageResizer.InterceptModule" />
    </modules>
</system.webServer>

结果

这是我的测试,你可以参考。

1.Upload 图像到我的 Azure Blob

https://brucechen.blob.core.windows.net/images01/test.jpg

https://brucechen.blob.core.windows.net/images01/landscape/test.jpg

https://brucechen.blob.core.windows.net/images02/test.jpg

2.Browser图片在我的网站如下:

http://bruce-chen.azurewebsites.net/cloud/images01/test.jpg?width=400

http://bruce-chen.azurewebsites.net/cloud/images01/landscape/test.jpg?width=400

http://bruce-chen.azurewebsites.net/cloud/images02/test.jpg?width=400

注意:您的图片链接应如下所示:

http(s)://<host-name>:<port>/<prefix-you-configured>/<blob-container-name>/<blob-file-name>?width=200&height=200

另外,通过ImageResizer预调整图片尺寸,你可以按照这个thread. Also, there is anther similar library called Simple.ImageResizer中的答案,这个是免费的,你可以参考。