Если вы используете ImageResizer с BLOB-объектами Azure, нужен ли мне плагин AzureReader2?
Я работаю над личным проектом по управлению пользователями моего клуба, он размещен на бесплатном пакете Azure (пока, по крайней мере), частично в качестве эксперимента, чтобы опробовать Azure. Частью создания их записей является добавление фотографии, поэтому у меня есть представление "Карточка контакта", которое позволяет мне видеть, кто они, когда они пришли, и фотографию.
Я установил ImageResizer, и мне очень легко изменить размер 10-мегапиксельной фотографии с камеры и сохранить их в файловой системе локально, но, похоже, для Azure мне нужно использовать их Blobs
загружать изображения на веб-сайты Windows Azure, и это для меня в новинку. В документации по ImageResizer сказано, что мне нужно использовать AzureReader2
для работы с BLOB-объектами Azure, но это не бесплатно. Это также говорит в их лучших методах № 5 к
Используйте динамическое изменение размера вместо предварительного изменения размера ваших изображений.
Это не то, о чем я думал, я собирался изменить размеры до 300x300 и 75x75 (для миниатюр) при создании записи пользователей. Но если мне нужно хранить полноразмерные изображения в виде больших двоичных объектов и динамически изменять их размер, тогда я могу просто использовать стандартные средства для загрузки большого двоичного объекта в контейнер, чтобы сохранить его в Azure, а затем для отображения изображений использовать ImageResizer и передайте ему каждое изображение, чтобы изменить его размер по мере необходимости. Таким образом, не нужно использовать AzureReader2, или я неправильно понял, что он делает / как он работает?
Есть ли другой способ рассмотреть?
Я еще не реализовал обрезку, но это уже совсем близко, когда я решил, как на самом деле правильно хранить изображения
3 ответа
С некоторым трепетом собираюсь не согласиться с астайками здесь. Я верю, что вы МОЖЕТЕ использовать ImageResizer с Azure БЕЗ необходимости AzureReader2. Может быть, я должен квалифицировать это, говоря: "Это работает на моей установке":)
Я использую ImageResizer в приложении MVC 3. У меня есть стандартная учетная запись Azure с контейнером изображений.
Вот мой тестовый код для представления:
@using (Html.BeginForm( "UploadPhoto", "BasicProfile", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<input type="submit" value="OK" />
}
А вот соответствующий код в методе Post Action:
// 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");
}
Это "грубый и готовый" код для проверки теории, который, безусловно, может быть улучшен, но он работает как локально, так и при развертывании в Azure. Я также могу просматривать загруженные изображения, которые правильно изменены.
Надеюсь, это кому-нибудь поможет.
Вы также можете загрузить измененные версии в Azure. Итак, вы сначала загружаете исходное изображение в виде большого двоичного объекта, скажем, с именем /original/xxx.jpg; Затем вы создаете изменение размера изображения и загружаете его в Azure с именем скажем /thumbnail/xxx.jpg. Если вы хотите создавать версии с измененным размером на лету или в отдельном потоке, вам может потребоваться временно сохранить оригинал на диск.
Ответ на конкретный вопрос:
Если вы используете ImageResizer с BLOB-объектами Azure, нужен ли мне плагин AzureReader2?
является YES
, И как описано в документации Image Resizer - этот плагин используется для чтения / обработки / обслуживания изображений из хранилища BLOB-объектов. Таким образом, нет никаких сомнений - если вы собираетесь использовать Image Resizer, 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.