Esempio n. 1
0
        private static PictureResizeRequest GetResizeRequest(HttpRequest req)
        {
            string requestBody = new StreamReader(req.Body).ReadToEnd();
            PictureResizeRequest pictureResizeRequest = JsonConvert.DeserializeObject <PictureResizeRequest>(requestBody);

            return(pictureResizeRequest);
        }
Esempio n. 2
0
        public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
                                                     [Blob("photos", FileAccess.Read, Connection = "StorageConnection")] CloudBlobContainer photosContainer,
                                                     [Blob("resized-photos/{rand-guid}", FileAccess.ReadWrite, Connection = "StorageConnection")] ICloudBlob resizedPhotoCloudBlob,
                                                     TraceWriter log)
        {
            PictureResizeRequest pictureResizeRequest = GetResizeRequest(req);
            Stream photoStream = await GetSourcePhotoStream(photosContainer, pictureResizeRequest.FileName);

            SetAttachmentAsContentDisposition(resizedPhotoCloudBlob, pictureResizeRequest);

            Image <Rgba32> image = Image.Load(photoStream);

            image.Mutate(e => e.Resize(pictureResizeRequest.RequiredWidth, pictureResizeRequest.RequiredHeight));

            MemoryStream resizedPhotoStream = new MemoryStream();

            image.Save(resizedPhotoStream, new JpegEncoder());
            resizedPhotoStream.Seek(0, SeekOrigin.Begin);

            await resizedPhotoCloudBlob.UploadFromStreamAsync(resizedPhotoStream);

            return(new JsonResult(new { FileName = resizedPhotoCloudBlob.Name }));
        }
        public static async Task <string> ResizePicture([ActivityTrigger] PictureResizeRequest pictureResizeRequest,
                                                        [Blob("photos", FileAccess.Read, Connection = "StorageConnection")] CloudBlobContainer photosContainer,
                                                        [Blob("resized-photos/{rand-guid}", FileAccess.ReadWrite, Connection = "StorageConnection")] ICloudBlob resizedPhotoCloudBlob,
                                                        TraceWriter log)
        {
            log.Info("inside [FunctionName(HttpDurableResizePicture_ResizePicture)]");

            var photoStream = await GetSourcePhotoStream(photosContainer, pictureResizeRequest.FileName);

            SetAttachmentAsContentDisposition(resizedPhotoCloudBlob, pictureResizeRequest);

            var image = Image.Load(photoStream);

            image.Mutate(e => e.Resize(pictureResizeRequest.RequiredWidth, pictureResizeRequest.RequiredHeight));

            var resizedPhotoStream = new MemoryStream();

            image.Save(resizedPhotoStream, new JpegEncoder());
            resizedPhotoStream.Seek(0, SeekOrigin.Begin);

            await resizedPhotoCloudBlob.UploadFromStreamAsync(resizedPhotoStream);

            return(resizedPhotoCloudBlob.Name);
        }
Esempio n. 4
0
 private static void SetAttachmentAsContentDisposition(ICloudBlob resizedPhotoCloudBlob,
                                                       PictureResizeRequest pictureResizeRequest)
 {
     resizedPhotoCloudBlob.Properties.ContentDisposition =
         $"attachment; filename={pictureResizeRequest.RequiredWidth}x{pictureResizeRequest.RequiredHeight}.jpeg";
 }