/// <summary>
        /// Send resize image message
        /// </summary>
        /// <param name="blobHandle">Blob handle</param>
        /// <param name="imageType">Image type</param>
        /// <returns>Send message task</returns>
        public async Task SendResizeImageMessage(string blobHandle, ImageType imageType)
        {
            ResizeImageMessage message = new ResizeImageMessage()
            {
                BlobHandle = blobHandle,
                ImageType  = imageType
            };

            Queue queue = await this.QueueManager.GetQueue(this.QueueIdentifier);

            await queue.SendAsync(message);
        }
示例#2
0
 /// <summary>
 /// Process message
 /// </summary>
 /// <param name="message">Queue message</param>
 /// <returns>Process message task</returns>
 protected override async Task Process(IMessage message)
 {
     if (message is ResizeImageMessage)
     {
         ResizeImageMessage resizeImageMessage = message as ResizeImageMessage;
         if (resizeImageMessage.DequeueCount == 1)
         {
             await this.blobsManager.CreateImageResizes(ProcessType.Backend, resizeImageMessage.BlobHandle, resizeImageMessage.ImageType);
         }
         else
         {
             await this.blobsManager.CreateImageResizes(ProcessType.BackendRetry, resizeImageMessage.BlobHandle, resizeImageMessage.ImageType);
         }
     }
 }
示例#3
0
        public void ResizeImage(ResizeImageMessage resizeImageMessage, ILogger logger)
        {
            var resizeTask = Task.Run(async() =>
            {
                try
                {
                    var connectionString = _configuration[$"Storage:Blobs:{resizeImageMessage.BlobStorageName}:ConnectionString"]
                                           ?? throw new ApplicationException($"Could not find 'Storage:Blobs:{resizeImageMessage.BlobStorageName}:ConnectionString' configuration section");
                    var cloudBlockBlob = new CloudBlockBlob(new Uri(resizeImageMessage.FullBlobPath), GetBlobClient(connectionString));

                    if (await cloudBlockBlob.ExistsAsync())
                    {
                        using (var stream = new MemoryStream())
                        {
                            await cloudBlockBlob.DownloadToStreamAsync(stream);
                            using (var bitmap = new Bitmap(stream))
                            {
                                var newSize = resizeImageMessage.Size == ImageSize.L ? _largeSize : resizeImageMessage.Size == ImageSize.M ? _mediumSize : _smallSize;
                                using (var resizedImage = FixedSize(bitmap, newSize))
                                {
                                    var imageFullPath    = $"{resizeImageMessage.Location}\\{resizeImageMessage.OriginalName}-{resizeImageMessage.Size}.jpg";
                                    var resizedImageBlob = cloudBlockBlob.Container.GetBlockBlobReference(imageFullPath);
                                    var bytes            = ImageToByteArray(resizedImage);
                                    await resizedImageBlob.UploadFromByteArrayAsync(bytes, 0, bytes.Length);
                                    resizedImageBlob.Properties.ContentType = "image/jpeg";
                                    await resizedImageBlob.SetPropertiesAsync();
                                }
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    logger.LogError(e.Message);
                }
            });

            resizeTask.Wait();
        }