コード例 #1
0
        private async Task UploadToAzure(Image dbImage, SKCodec codec, CloudBlobContainer container, int desiredWidth)
        {
            var ratio          = (float)desiredWidth / (float)codec.Info.Width;
            var supportedScale = codec.GetScaledDimensions(ratio);

            SKEncodedImageFormat target = codec.EncodedFormat == SKEncodedImageFormat.Gif ? SKEncodedImageFormat.Gif : SKEncodedImageFormat.Png;

            var width  = supportedScale.Width;
            var height = supportedScale.Height;
            var format = target.ToString();
            var name   = $"{dbImage.Slug}_{width}_{height}";

            var blobRef = container.GetBlockBlobReference(name);
            var url     = blobRef.StorageUri.PrimaryUri.ToString();

            using (var resultBitmap = SKBitmap.Decode(codec))
                using (var resizedBitmap = resultBitmap.Resize(new SKImageInfo(supportedScale.Width, supportedScale.Height), SKBitmapResizeMethod.Lanczos3))
                    using (var resultImage = SKImage.FromBitmap(resizedBitmap))
                        using (var imageStream = resultImage.Encode(target, 100).AsStream())
                        {
                            using (var outputSTream = await blobRef.OpenWriteAsync())
                            {
                                await imageStream.CopyToAsync(outputSTream);
                            }
                        }

            var data = new AzureAdapterMetadata(this.account.BlobEndpoint.ToString(), container.Name, name, url);

            await this.imageData.SetImageLinks(new ImageLink(dbImage.Id, null, width, height, format, ImageAdapter.AzureFile, data.ToString()));
        }
コード例 #2
0
        public Task <string> GetUrl(ImageLink link)
        {
            if (link.Adapter != ImageAdapter.AzureFile)
            {
                throw new NotImplementedException("Only azure storage is supproted");
            }

            var meta = AzureAdapterMetadata.Parse(link.Metadata);

            return(Task.FromResult(meta.Url));
        }