private async void ChangeImageColorType() { //string mime = string.Format("image/png", fileName.Substring(fileName.LastIndexOf('.') + 1)); ImageCodecInfo codec = ColorAndImageFactory.GetEncoderInfo(cmbMime.SelectedItem.ToString()); EncoderParameters encoderParameters = new EncoderParameters(2); EncoderParameter parameterColorDepth = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, GetBitCount()); EncoderParameter parameterQuality = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)numericUpDown1.Value.ToInt()); encoderParameters.Param[0] = parameterColorDepth; encoderParameters.Param[1] = parameterQuality; using (MemoryStream ms = new MemoryStream()) { var img = _srcImage; if (cmbMime.SelectedIndex == 1) { img = new Bitmap(_srcImage); _progress.OperationsTotal = img.Height * 2; _progress.OperationsDone = 0; BlockGUI(true); _progress.ProgressChanged += _progress_ProgressChanged; await OptimizePNG(img); _progress.ProgressChanged -= _progress_ProgressChanged; BlockGUI(false); } img.Save(ms, codec, encoderParameters); _imgBinaryData = ms.ToArray(); lblSize.Text = _imgBinaryData.Length.ToByteMetricString(false); _image = new Bitmap(ms); //OptimizePNG(); _area.SetImage(_image); _area.Redraw(); } }
private void button1_Click_1(object sender, EventArgs e) { using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.AddExtension = true; sfd.CheckPathExists = true; ImageCodecInfo codec = ColorAndImageFactory.GetEncoderInfo(cmbMime.SelectedItem.ToString()); sfd.Filter = string.Format("Choosen format({0})|{0}", codec.FilenameExtension); if (sfd.ShowDialog() == DialogResult.Cancel) { return; } EncoderParameters encoderParameters = new EncoderParameters(2); EncoderParameter parameterColorDepth = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, GetBitCount()); EncoderParameter parameterQuality = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)numericUpDown1.Value.ToInt()); encoderParameters.Param[0] = parameterColorDepth; encoderParameters.Param[1] = parameterQuality; using (FileStream fs = new FileStream(sfd.FileName, FileMode.Create)) { fs.Write(_imgBinaryData, 0, _imgBinaryData.Length); } } }