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); }
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); } }
public static double GetFileSizeScaledInMegaByte(ImageViewModel imageViewModel) { var ms = new MemoryStream(); Save(imageViewModel, ms); return (double)ms.Length / (1024 * 1024); }
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); } }
public void RemoveImage(ImageViewModel imageViewModel) { imageViewModel.PropertyChanged -= HandleImagePropertyChanged; _images.Remove(imageViewModel); ImageDataChangedForCalculation = true; }
public void AddImage(ImageViewModel imageViewModel) { imageViewModel.Parent = this; imageViewModel.PropertyChanged += HandleImagePropertyChanged; _images.Add(imageViewModel); ImageDataChangedForCalculation = true; }