在天蓝色存储中跨多个容器的Imageresizer

时间:2016-10-30 20:53:31

标签: azure azure-storage-blobs image-resizing

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

1 个答案:

答案 0 :(得分:3)

根据您的要求,您可以尝试利用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.将图像上传到我的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.浏览器在我的网站上的图像如下:

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中的答案进行操作。此外,还有一个类似于Simple.ImageResizer的类似库,它是免费的,您可以参考它。