Added auto JPEG quality option

This commit is contained in:
Jaex 2021-07-18 20:41:33 +03:00
parent 7cce221b30
commit 09c659bbe8
6 changed files with 3757 additions and 1194 deletions

View file

@ -2529,7 +2529,7 @@ public static MemoryStream SaveJPEGAutoQuality(Image img, int sizeLimit, int qua
ms = SaveJPEG(img, quality, false);
//Console.WriteLine($"Quality: {quality} - Size: {ms.Length.ToSizeString()}");
//DebugHelper.WriteLine($"Quality: {quality}% - Size: {ms.Length.ToSizeString()}");
if (ms.Length <= sizeLimit)
{

View file

@ -293,6 +293,7 @@ private void InitializeComponent()
this.pgTaskSettings = new System.Windows.Forms.PropertyGrid();
this.chkOverrideAdvancedSettings = new System.Windows.Forms.CheckBox();
this.tttvMain = new ShareX.HelpersLib.TabToTreeView();
this.cbImageAutoJPEGQuality = new System.Windows.Forms.CheckBox();
this.tcTaskSettings.SuspendLayout();
this.tpTask.SuspendLayout();
this.cmsDestinations.SuspendLayout();
@ -905,6 +906,7 @@ private void InitializeComponent()
//
// pImage
//
this.pImage.Controls.Add(this.cbImageAutoJPEGQuality);
this.pImage.Controls.Add(this.cbImagePNGBitDepth);
this.pImage.Controls.Add(this.lblImagePNGBitDepth);
this.pImage.Controls.Add(this.cbImageAutoUseJPEG);
@ -2543,6 +2545,13 @@ private void InitializeComponent()
this.tttvMain.TreeViewSize = 190;
this.tttvMain.TabChanged += new ShareX.HelpersLib.TabToTreeView.TabChangedEventHandler(this.tttvMain_TabChanged);
//
// cbImageAutoJPEGQuality
//
resources.ApplyResources(this.cbImageAutoJPEGQuality, "cbImageAutoJPEGQuality");
this.cbImageAutoJPEGQuality.Name = "cbImageAutoJPEGQuality";
this.cbImageAutoJPEGQuality.UseVisualStyleBackColor = true;
this.cbImageAutoJPEGQuality.CheckedChanged += new System.EventHandler(this.cbImageAutoJPEGQuality_CheckedChanged);
//
// TaskSettingsForm
//
resources.ApplyResources(this, "$this");
@ -2907,5 +2916,6 @@ private void InitializeComponent()
private System.Windows.Forms.Label lblToastWindowFadeDurationSeconds;
private System.Windows.Forms.Label lblToastWindowDurationSeconds;
private System.Windows.Forms.Button btnActions;
private System.Windows.Forms.CheckBox cbImageAutoJPEGQuality;
}
}

View file

@ -235,7 +235,9 @@ public TaskSettingsForm(TaskSettings hotkeySetting, bool isDefault = false)
cbImageGIFQuality.SelectedIndex = (int)TaskSettings.ImageSettings.ImageGIFQuality;
cbImageAutoUseJPEG.Checked = TaskSettings.ImageSettings.ImageAutoUseJPEG;
nudImageAutoUseJPEGSize.Enabled = TaskSettings.ImageSettings.ImageAutoUseJPEG;
cbImageAutoJPEGQuality.Enabled = TaskSettings.ImageSettings.ImageAutoUseJPEG;
nudImageAutoUseJPEGSize.SetValue(TaskSettings.ImageSettings.ImageAutoUseJPEGSize);
cbImageAutoJPEGQuality.Checked = TaskSettings.ImageSettings.ImageAutoJPEGQuality;
cbImageFileExist.Items.Clear();
cbImageFileExist.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<FileExistAction>());
cbImageFileExist.SelectedIndex = (int)TaskSettings.ImageSettings.FileExistAction;
@ -924,6 +926,7 @@ private void cbImageAutoUseJPEG_CheckedChanged(object sender, EventArgs e)
{
TaskSettings.ImageSettings.ImageAutoUseJPEG = cbImageAutoUseJPEG.Checked;
nudImageAutoUseJPEGSize.Enabled = TaskSettings.ImageSettings.ImageAutoUseJPEG;
cbImageAutoJPEGQuality.Enabled = TaskSettings.ImageSettings.ImageAutoUseJPEG;
}
private void nudImageAutoUseJPEGSize_ValueChanged(object sender, EventArgs e)
@ -931,6 +934,11 @@ private void nudImageAutoUseJPEGSize_ValueChanged(object sender, EventArgs e)
TaskSettings.ImageSettings.ImageAutoUseJPEGSize = (int)nudImageAutoUseJPEGSize.Value;
}
private void cbImageAutoJPEGQuality_CheckedChanged(object sender, EventArgs e)
{
TaskSettings.ImageSettings.ImageAutoJPEGQuality = cbImageAutoJPEGQuality.Checked;
}
private void cbImageFileExist_SelectedIndexChanged(object sender, EventArgs e)
{
TaskSettings.ImageSettings.FileExistAction = (FileExistAction)cbImageFileExist.SelectedIndex;

File diff suppressed because it is too large Load diff

View file

@ -273,7 +273,16 @@ public static ImageData PrepareImage(Image img, TaskSettings taskSettings)
imageData.ImageStream.Length > taskSettings.ImageSettings.ImageAutoUseJPEGSize * 1000)
{
imageData.ImageStream.Dispose();
imageData.ImageStream = SaveImageAsStream(img, EImageFormat.JPEG, taskSettings);
if (taskSettings.ImageSettings.ImageAutoJPEGQuality)
{
imageData.ImageStream = ImageHelpers.SaveJPEGAutoQuality(img, taskSettings.ImageSettings.ImageAutoUseJPEGSize * 1000, 2, 70, 100);
}
else
{
imageData.ImageStream = ImageHelpers.SaveJPEG(img, taskSettings.ImageSettings.ImageJPEGQuality);
}
imageData.ImageFormat = EImageFormat.JPEG;
}

View file

@ -313,6 +313,7 @@ public class TaskSettingsImage
public GIFQuality ImageGIFQuality = GIFQuality.Default;
public bool ImageAutoUseJPEG = true;
public int ImageAutoUseJPEGSize = 2048;
public bool ImageAutoJPEGQuality = false;
public FileExistAction FileExistAction = FileExistAction.Ask;
#endregion Image / General