예제 #1
0
 public PhotosController(
     IUserRepository userRepository,
     IPhotoRepository photoRepository,
     INRAKOLogger logger,
     AmazonS3Tools amazonS3Tools,
     IMutationActionFactorySelector mutationActionFactorySelector)
 {
     _photoRepository = photoRepository;
     _userRepository  = userRepository;
     _logger          = logger;
     _amazonS3Tools   = amazonS3Tools;
     _mutationActionFactorySelector = mutationActionFactorySelector;
 }
예제 #2
0
        internal static byte[] PerformMutations(string photoUrl, string extension, IEnumerable <MutationAction> actions, Microsoft.AspNetCore.Http.HttpRequest request, IMutationActionFactorySelector mutationActionFactorySelector)
        {
            byte[] fileBytes;
            using (WebClient webClient = new WebClient())
            {
                if (photoUrl.StartsWith("~"))
                {
                    photoUrl = $"{request.Scheme}://{request.Host}{photoUrl.TrimStart('~')}";
                }

                byte[] data = webClient.DownloadData(photoUrl);

                using (MemoryStream mem = new MemoryStream(data))
                {
                    MemoryStream ms = new MemoryStream();
                    using (Image <Rgba32> image = Image.Load <Rgba32>(mem))
                    {
                        foreach (var action in actions)
                        {
                            mutationActionFactorySelector.GetMutationActionFactory(action).GetMutationAction().Mutate(image);
                        }

                        image.Save(ms, ResolveImageEncoder(extension));
                    }
                    fileBytes = ms.ToArray();
                    ms.Close();
                }
            }
            return(fileBytes);
        }