|
|
|
@ -139,7 +139,7 @@ namespace Emby.Drawing.ImageMagick
|
|
|
|
|
string.Equals(ext, ".webp", StringComparison.OrdinalIgnoreCase);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void EncodeImage(string inputPath, string outputPath, int width, int height, int quality, ImageProcessingOptions options, ImageFormat selectedOutputFormat)
|
|
|
|
|
public void EncodeImage(string inputPath, string outputPath, int rotationAngle, int width, int height, int quality, ImageProcessingOptions options, ImageFormat selectedOutputFormat)
|
|
|
|
|
{
|
|
|
|
|
// Even if the caller specified 100, don't use it because it takes forever
|
|
|
|
|
quality = Math.Min(quality, 99);
|
|
|
|
@ -150,6 +150,11 @@ namespace Emby.Drawing.ImageMagick
|
|
|
|
|
{
|
|
|
|
|
ScaleImage(originalImage, width, height);
|
|
|
|
|
|
|
|
|
|
if (rotationAngle > 0)
|
|
|
|
|
{
|
|
|
|
|
RotateImage(originalImage, rotationAngle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DrawIndicator(originalImage, width, height, options);
|
|
|
|
|
|
|
|
|
|
originalImage.CurrentImage.CompressionQuality = quality;
|
|
|
|
@ -166,6 +171,11 @@ namespace Emby.Drawing.ImageMagick
|
|
|
|
|
{
|
|
|
|
|
ScaleImage(originalImage, width, height);
|
|
|
|
|
|
|
|
|
|
if (rotationAngle > 0)
|
|
|
|
|
{
|
|
|
|
|
RotateImage(originalImage, rotationAngle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
wand.CurrentImage.CompositeImage(originalImage, CompositeOperator.OverCompositeOp, 0, 0);
|
|
|
|
|
DrawIndicator(wand, width, height, options);
|
|
|
|
|
|
|
|
|
@ -179,6 +189,14 @@ namespace Emby.Drawing.ImageMagick
|
|
|
|
|
SaveDelay();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void RotateImage(MagickWand wand, float angle)
|
|
|
|
|
{
|
|
|
|
|
using (var pixelWand = new PixelWand("none", 1))
|
|
|
|
|
{
|
|
|
|
|
wand.CurrentImage.RotateImage(pixelWand, angle);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ScaleImage(MagickWand wand, int width, int height)
|
|
|
|
|
{
|
|
|
|
|
var highQuality = false;
|
|
|
|
|