如果将ImageResizer与Azure Blob一起使用,我是否需要AzureReader2插件?
我正在做一个个人项目来管理我的俱乐部的用户,它托管在免费的Azure软件包上(至少现在是这样),部分是为了试用Azure。创建他们的记录的一部分是添加一张照片,所以我有一个名片视图,可以让我看到他们是谁,他们什么时候来的,还有一张照片 我已经安装了,从我的相机调整10MP照片的大小并将其保存到本地文件系统非常容易,但是对于Azure,我似乎需要使用它们的如果将ImageResizer与Azure Blob一起使用,我是否需要AzureReader2插件?,azure,azure-storage-blobs,imageresizer,Azure,Azure Storage Blobs,Imageresizer,我正在做一个个人项目来管理我的俱乐部的用户,它托管在免费的Azure软件包上(至少现在是这样),部分是为了试用Azure。创建他们的记录的一部分是添加一张照片,所以我有一个名片视图,可以让我看到他们是谁,他们什么时候来的,还有一张照片 我已经安装了,从我的相机调整10MP照片的大小并将其保存到本地文件系统非常容易,但是对于Azure,我似乎需要使用它们的blob来,这对我来说是新的。上面说我需要使用AzureReader2来处理Azure Blob,但这不是免费的。在他们的#5到 使用动态调整大
blob
来,这对我来说是新的。上面说我需要使用AzureReader2
来处理Azure Blob,但这不是免费的。在他们的#5到
使用动态调整大小,而不是预先调整图像大小
这不是我所想的,在创建用户记录时,我打算将大小调整为300x300和75x75(用于缩略图)。但是,如果我应该将完整大小的图像存储为blob并在退出时动态调整大小,那么我可以使用标准方法将其保存到Azure,然后当我想要显示图像时,使用ImageResizer并将其传递给每个图像以根据需要调整大小。这样就不需要使用AzureReader2,或者我是否误解了它的功能/工作原理
<> P>有另一种方法考虑吗?< /P>
我还没有实现裁剪,但这是下一个要解决的问题,当我研究出如何正确存储图像时,具体问题的答案是: 如果对Azure Blob使用ImageResizer,我需要AzureReader2吗 插件 是
是
。正如Image Resizer文档中所述,该插件用于从Blob存储中读取/处理/提供图像。所以,毫无疑问,如果你打算使用图像大小调整器,AzureReader2是你所需要的插件,以使事情正确。它将负责Blob上传/服务
尽管我质疑Image Resizer在Windows Azure上的团队能力,因为他们引用的是
Azure SDK v.2
,而Azure SDK的最新版本是1.8
。他们的意思是Azure存储客户端库,它的版本为1.7
和2.x
。而版本2.x
则是推荐使用的版本,并随Azure SDK 1.8提供。因此,不要搜索Azure SDK 2.0,请安装最新版本,即1.8。顺便说一下,使用Nuget软件包管理器安装Azure存储库v。2.0.x.您还可以将调整大小的版本上载到azure。因此,您首先将原始图像作为一个blob上传,比如名称为/original/xxx.jpg;然后创建图像的大小调整,并将其上载到azure,名称为/thumboil/xxx.jpg。如果您想在运行中或在单独的线程上创建调整大小的版本,可能需要将原始版本临时保存到磁盘。我不同意astaykov的观点。我相信你可以在Azure上使用ImageResizer,而不需要AzureReader2。也许我应该通过说“它在我的设置中起作用”来限定这一点:)
我正在MVC3应用程序中使用ImageResizer。我有一个带有图像容器的标准Azure帐户
以下是我的视图测试代码:
@using (Html.BeginForm( "UploadPhoto", "BasicProfile", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<input type="submit" value="OK" />
}
这是测试理论的“粗略且准备就绪”的代码,当然可以进行改进,但是,它在本地和部署到Azure上都可以工作。我还可以查看我上传的图像,这些图像的大小已经正确调整
希望这对其他人有所帮助。AzureReader2插件为您处理所有与Azure相关的工作,但是可以在没有插件的情况下使用
ImageResizer
和Azure Blob-您只需按照以下说明操作即可
// This action handles the form POST and the upload
[HttpPost]
public ActionResult UploadPhoto(HttpPostedFileBase file)
{
// Verify that the user selected a file
if (file != null && file.ContentLength > 0)
{
string newGuid = Guid.NewGuid().ToString();
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("images");
// Retrieve reference to the blob we want to create
CloudBlockBlob blockBlob = container.GetBlockBlobReference(newGuid + ".jpg");
// Populate our blob with contents from the uploaded file.
using (var ms = new MemoryStream())
{
ImageResizer.ImageJob i = new ImageResizer.ImageJob(file.InputStream,
ms, new ImageResizer.ResizeSettings("width=800;height=600;format=jpg;mode=max"));
i.Build();
blockBlob.Properties.ContentType = "image/jpeg";
ms.Seek(0, SeekOrigin.Begin);
blockBlob.UploadFromStream(ms);
}
}
// redirect back to the index action to show the form once again
return RedirectToAction("UploadPhoto");
}