support photo orientation

This commit is contained in:
Luke Pulverenti
2016-01-21 03:23:02 -05:00
parent d678059d13
commit faa9127a20
6 changed files with 76 additions and 8 deletions

View File

@@ -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;