improved input dir handling

This commit is contained in:
tomse
2025-08-23 15:15:13 +02:00
parent baa7b9ff58
commit 2993807605
15 changed files with 200 additions and 28 deletions

View File

@@ -0,0 +1,56 @@
using ImageMagick;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace PDFWorkflowManager
{
public static class ImageService
{
public static void ConvertToJpeg(string sourceFileName, string destinationFileName, int compressionLevel, int dpi = 300)
{
using (Image sourceImage = Image.FromFile(sourceFileName))
{
float scaleFactor = dpi / sourceImage.HorizontalResolution;
int newWidth = (int)(sourceImage.Width * scaleFactor);
int newHeight = (int)(sourceImage.Height * scaleFactor);
using (var newImage = new Bitmap(newWidth, newHeight))
{
newImage.SetResolution(dpi, dpi);
using (Graphics graphics = Graphics.FromImage(newImage))
{
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.DrawImage(sourceImage, 0, 0, newWidth, newHeight);
}
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, compressionLevel);
ImageCodecInfo jpegCodec = GetEncoderInfo(ImageFormat.Jpeg);
newImage.Save(destinationFileName, jpegCodec, encoderParameters);
}
}
}
public static ImageCodecInfo GetEncoderInfo(ImageFormat format)
{
foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageDecoders())
{
if (codec.FormatID == format.Guid)
return codec;
}
return null;
}
public static void CreateThumbnail(string fileName, string outputPath)
{
using (var image = new MagickImage(fileName))
{
var size = new MagickGeometry(240, 340) { IgnoreAspectRatio = false };
image.Resize(size);
image.Write(outputPath);
}
}
}
}