Added CombineImages method

This commit is contained in:
Jaex 2021-06-14 15:18:09 +03:00
parent e442d7c6a1
commit d7aa0ab7f5
4 changed files with 66 additions and 42 deletions

View file

@ -1817,9 +1817,9 @@ public static string SaveImageFileDialog(Image img, string filePath = "", bool u
public static Bitmap LoadImage(string filePath)
{
try
if (!string.IsNullOrEmpty(filePath))
{
if (!string.IsNullOrEmpty(filePath))
try
{
filePath = Helpers.GetAbsolutePath(filePath);
@ -1836,10 +1836,10 @@ public static Bitmap LoadImage(string filePath)
return bmp;
}
}
}
catch (Exception e)
{
DebugHelper.WriteException(e);
catch (Exception e)
{
DebugHelper.WriteException(e);
}
}
return null;
@ -1940,6 +1940,42 @@ public static Bitmap LoadImageWithFileDialog()
return bmp;
}
public static Bitmap CombineImages(IEnumerable<string> imageFiles, Orientation orientation = Orientation.Vertical,
ImageCombinerAlignment alignment = ImageCombinerAlignment.LeftOrTop, int space = 0, bool autoFillBackground = false)
{
List<Bitmap> images = new List<Bitmap>();
try
{
foreach (string filePath in imageFiles)
{
Bitmap bmp = LoadImage(filePath);
if (bmp != null)
{
images.Add(bmp);
}
}
if (images.Count > 1)
{
return CombineImages(images, orientation, alignment, space, autoFillBackground);
}
}
finally
{
foreach (Bitmap bmp in images)
{
if (bmp != null)
{
bmp.Dispose();
}
}
}
return null;
}
public static List<Bitmap> SplitImage(Image img, int rowCount, int columnCount)
{
List<Bitmap> images = new List<Bitmap>();

View file

@ -28,7 +28,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace ShareX.MediaLib
@ -174,50 +174,25 @@ private void btnCombine_Click(object sender, EventArgs e)
{
if (lvImages.Items.Count > 0)
{
List<Bitmap> images = new List<Bitmap>();
try
{
foreach (ListViewItem lvi in lvImages.Items)
{
string filePath = lvi.Text;
List<string> imageFiles = lvImages.Items.Cast<ListViewItem>().Select(x => x.Text).ToList();
if (File.Exists(filePath))
if (imageFiles.Count > 1)
{
Bitmap output = ImageHelpers.CombineImages(imageFiles, Options.Orientation, Options.Alignment, Options.Space, Options.AutoFillBackground);
if (output != null)
{
Bitmap bmp = ImageHelpers.LoadImage(filePath);
if (bmp != null)
{
images.Add(bmp);
}
OnProcessRequested(output);
}
}
if (images.Count > 1)
{
Bitmap output = ImageHelpers.CombineImages(images, Options.Orientation, Options.Alignment, Options.Space, Options.AutoFillBackground);
OnProcessRequested(output);
}
}
catch (Exception ex)
{
DebugHelper.WriteException(ex);
ex.ShowError();
}
finally
{
if (images != null)
{
foreach (Bitmap image in images)
{
if (image != null)
{
image.Dispose();
}
}
}
}
}
}

View file

@ -212,7 +212,7 @@ public static void ExecuteJob(TaskSettings taskSettings, HotkeyType job, CLIComm
UploadManager.IndexFolder();
break;
case HotkeyType.ImageCombiner:
OpenImageCombiner(safeTaskSettings);
OpenImageCombiner(null, safeTaskSettings);
break;
case HotkeyType.ImageSplitter:
OpenImageSplitter();
@ -841,7 +841,7 @@ public static void OpenDirectoryIndexer(TaskSettings taskSettings = null)
form.Show();
}
public static void OpenImageCombiner(TaskSettings taskSettings = null, IEnumerable<string> imageFiles = null)
public static void OpenImageCombiner(IEnumerable<string> imageFiles = null, TaskSettings taskSettings = null)
{
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
@ -850,6 +850,19 @@ public static void OpenImageCombiner(TaskSettings taskSettings = null, IEnumerab
imageCombinerForm.Show();
}
public static void CombineImages(IEnumerable<string> imageFiles, Orientation orientation, TaskSettings taskSettings = null)
{
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
Bitmap output = ImageHelpers.CombineImages(imageFiles, orientation, taskSettings.ToolsSettings.ImageCombinerOptions.Alignment,
taskSettings.ToolsSettings.ImageCombinerOptions.Space, taskSettings.ToolsSettings.ImageCombinerOptions.AutoFillBackground);
if (output != null)
{
UploadManager.RunImageTask(output, taskSettings);
}
}
public static void OpenImageSplitter()
{
ImageSplitterForm imageSplitterForm = new ImageSplitterForm();

View file

@ -394,7 +394,7 @@ public void CombineImages()
if (imageFiles.Count() > 1)
{
TaskHelpers.OpenImageCombiner(null, imageFiles);
TaskHelpers.OpenImageCombiner(imageFiles);
}
}
}