コード例 #1
0
        public static void SaveScaled(ImageViewModel imageViewModel, string path)
        {
            string pathToSave = Path.Combine(path, imageViewModel.Name);
            using (var fs = new FileStream(pathToSave, FileMode.Create))
            {
                Save(imageViewModel, fs);
            }

            if ((int) imageViewModel.Rotation%360 == 0) return;
            var img = Image.FromFile(pathToSave);
            img.RotateFlip(GetRotationType(imageViewModel.Rotation));
            img.Save(pathToSave, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
コード例 #2
0
        private void CalculateImage(ImageViewModel imageViewModel, ParallelLoopState state, Int64 counter)
        {
            if (DoRestart) state.Stop();

            var messageText = "Calculating Compressed Size" +
                              new string('.', (int)(counter % 4));

            if (Application.Current == null) return;

            Application.Current.Dispatcher.Invoke(
                DispatcherPriority.Normal,
                (Action)(() =>
                {
                    Ui.ProgressValue += 1;
                    Ui.MessageText = messageText;
                }));

            lock (_lockObject)
            {
                _sizeSum += ImageModel.GetFileSizeScaledInMegaByte(imageViewModel);
            }
        }
コード例 #3
0
 public static double GetFileSizeScaledInMegaByte(ImageViewModel imageViewModel)
 {
     var ms = new MemoryStream();
     Save(imageViewModel, ms);
     return (double)ms.Length / (1024 * 1024);
 }
コード例 #4
0
        private static void Save(ImageViewModel imageViewModel, Stream stream)
        {
            var imageShrinkerViewModel = imageViewModel.Parent;
            var original = new Bitmap(imageViewModel.Path);

            var factor = 1.0;
            if (imageShrinkerViewModel.DesiredWidth < imageViewModel.Width)
                factor = imageShrinkerViewModel.DesiredWidth / (double)imageViewModel.Width;
            if (imageShrinkerViewModel.DesiredHeight < imageViewModel.Height)
                factor = imageShrinkerViewModel.DesiredHeight / (double)imageViewModel.Height;

            var scaled = new Bitmap((int)(original.Width * factor), (int)(original.Height * factor));
            using (Graphics graphics = Graphics.FromImage(scaled))
            {
                graphics.DrawImage(original, new Rectangle(0, 0, scaled.Width, scaled.Height));
                var encoderParams = new System.Drawing.Imaging.EncoderParameters(1);
                encoderParams.Param[0] = new DrawImaging.EncoderParameter(DrawImaging.Encoder.Quality, imageShrinkerViewModel.Quality);
                scaled.Save(stream, GetEncoderInfo("image/jpeg"), encoderParams);
            }
        }
コード例 #5
0
 public void RemoveImage(ImageViewModel imageViewModel)
 {
     imageViewModel.PropertyChanged -= HandleImagePropertyChanged;
     _images.Remove(imageViewModel);
     ImageDataChangedForCalculation = true;
 }
コード例 #6
0
 public void AddImage(ImageViewModel imageViewModel)
 {
     imageViewModel.Parent = this;
     imageViewModel.PropertyChanged += HandleImagePropertyChanged;
     _images.Add(imageViewModel);
     ImageDataChangedForCalculation = true;
 }