private static void PutBlob(string name, byte[] buffer)
 {
     if (!AzureBlogStorageUtil.BlobExists(azureStorageBaseURL + name))
     {
         AzureBlogStorageUtil.PutBlob(azureStorageBaseURL + name, azureStorageAccountName, azureStorageAccountKey, buffer, "image/jpeg");
     }
 }
        private static void ImportPhotoBlobs()
        {
            var rootPhotoPath = @"http://imdt.friendsofdt.org/";

            var media_items = oldDatabaseConnection.Query("SELECT * FROM media_items").ToList();

            Log("Importing " + media_items.Count + " Media Blobs");

            var count = 0;

            foreach (var _row in media_items)
            {
                var entity = new Photo();
                if (_row.guid == null)
                {
                    throw new InvalidOperationException("Media Item is Missing GUID. Row needs to be updated before Importing");
                }
                Guid guid = _row.guid;
                entity.PhotoId = (int)_row.ID;
                entity.GUID    = (Guid)_row.guid;

                byte[] original = null;
                original = AzureBlogStorageUtil.DownloadPublicBlob(rootPhotoPath + _row.item.ToString().Replace("./", ""));

                if (original == null)
                {
                    Log("Missing File!" + _row.item.ToString());
                    continue;
                }

                var fullSize  = ImageUtilities.LoadBitmap(original);
                var thumbnail = ImageUtilities.GetBytes(ImageUtilities.Resize(fullSize, 240, 240), ImageFormat.Jpeg);
                var tiny      = ImageUtilities.GetBytes(ImageUtilities.Resize(fullSize, 50, 50), ImageFormat.Jpeg);

                PutBlob(entity.GetOriginalFileName(), original);
                PutBlob(entity.GetThumbnailFileName(), thumbnail);
                PutBlob(entity.GetTinyFileName(), tiny);

                if (fullSize.Width > 600 || fullSize.Height > 800)
                {
                    entity.LargeFileIsSameAsOriginal = false;
                    // original image is too large for general display
                    var large = ImageUtilities.GetBytes(ImageUtilities.Resize(fullSize, 600, 800), ImageFormat.Jpeg);
                    PutBlob(entity.GetLargeFileName(), large);
                }

                count++;
                if (count % 100 == 0)
                {
                    Log("Imported " + count + " Photo Blobs");
                }
            }
            Log("Imported " + count + " Photo Blobs");
        }
        public static Photo Upload(BaseController controller, UploadPOSTParameters param)
        {
            var photo = new Photo();

            controller.DatabaseSession.Save(photo);
            controller.DatabaseSession.Flush(); // to get the ID

            var unique_id = photo.PhotoId.ToString();

            var original_buffer = new byte[param.Photo.ContentLength];

            param.Photo.InputStream.Read(original_buffer, 0, param.Photo.ContentLength);

            using (var originalBitmap = ImageUtilities.LoadBitmap(original_buffer))
            {
                AzureBlogStorageUtil.PutBlob(photo.GetOriginalFileURL()
                                             , azureStorageAccountName, azureStorageAccountKey
                                             , ImageUtilities.GetBytes(originalBitmap, ImageFormat.Jpeg), "image/jpeg");

                if (originalBitmap.Width > 600 || originalBitmap.Height > 800)
                {
                    // original image is too large for general display
                    photo.LargeFileIsSameAsOriginal = false;
                    using (var largeBitmap = ImageUtilities.Resize(originalBitmap, 600, 800))
                    {
                        AzureBlogStorageUtil.PutBlob(photo.GetLargeFileURL()
                                                     , azureStorageAccountName, azureStorageAccountKey
                                                     , ImageUtilities.GetBytes(largeBitmap, ImageFormat.Jpeg), "image/jpeg");
                    }
                }

                using (var thumbnailBitmap = ImageUtilities.Resize(originalBitmap, 240, 240))
                {
                    AzureBlogStorageUtil.PutBlob(photo.GetThumbnailFileURL()
                                                 , azureStorageAccountName, azureStorageAccountKey
                                                 , ImageUtilities.GetBytes(thumbnailBitmap, ImageFormat.Jpeg), "image/jpeg");
                }
                using (var tinyBitmap = ImageUtilities.Resize(originalBitmap, 50, 50))
                {
                    AzureBlogStorageUtil.PutBlob(photo.GetTinyFileURL()
                                                 , azureStorageAccountName, azureStorageAccountKey
                                                 , ImageUtilities.GetBytes(tinyBitmap, ImageFormat.Jpeg), "image/jpeg");
                }
            }

            return(photo);
        }
        private static void FixLargePhotoFlag()
        {
            var rootPhotoPath = @"http://imdt.friendsofdt.org/";

            var media_items = oldDatabaseConnection.Query("SELECT * FROM media_items").ToList();

            Log("Checking " + media_items.Count + " Media Blobs For Large Images");

            var count = 0;

            foreach (var _row in media_items)
            {
                if (_row.guid == null)
                {
                    throw new InvalidOperationException("Media Item is Missing GUID. Row needs to be updated before Importing");
                }
                var photoID = (int)_row.ID;

                byte[] original = null;
                original = AzureBlogStorageUtil.DownloadPublicBlob(rootPhotoPath + _row.item.ToString().Replace("./", ""));

                if (original == null)
                {
                    Log("Missing File!" + _row.item.ToString());
                    continue;
                }

                using (var fullSize = ImageUtilities.LoadBitmap(original))
                {
                    if (fullSize.Width > 600 || fullSize.Height > 800)
                    {
                        // original image is too large for general display
                        using (var session = sessionFactory.OpenSession())
                        {
                            session.Execute("UPDATE dbo.Photo SET LargeFileIsSameAsOriginal = 0 WHERE PhotoId = @PhotoId", new { PhotoId = photoID });
                        }
                        count++;
                    }
                }
            }
            Log("Fixed " + count + " Large Photos");
        }