improved input dir handling
This commit is contained in:
56
PDFWorkflowManager/PDFWorkflowManager/ImageService.cs
Normal file
56
PDFWorkflowManager/PDFWorkflowManager/ImageService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user