aboutsummaryrefslogtreecommitdiff
path: root/Emby.Drawing.Skia
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Drawing.Skia')
-rw-r--r--Emby.Drawing.Skia/SkiaEncoder.cs27
-rw-r--r--Emby.Drawing.Skia/StripCollageBuilder.cs25
2 files changed, 29 insertions, 23 deletions
diff --git a/Emby.Drawing.Skia/SkiaEncoder.cs b/Emby.Drawing.Skia/SkiaEncoder.cs
index 9eb7055b4..0467794dc 100644
--- a/Emby.Drawing.Skia/SkiaEncoder.cs
+++ b/Emby.Drawing.Skia/SkiaEncoder.cs
@@ -3,7 +3,7 @@ using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Logging;
+using Microsoft.Extensions.Logging;
using SkiaSharp;
using System;
using System.IO;
@@ -81,7 +81,7 @@ namespace Emby.Drawing.Skia
// test an operation that requires the native library
SKPMColor.PreMultiply(SKColors.Black);
- _logger.Info("SkiaSharp version: " + GetVersion());
+ _logger.LogInformation("SkiaSharp version: " + GetVersion());
}
public static string GetVersion()
@@ -530,7 +530,7 @@ namespace Emby.Drawing.Skia
throw new ArgumentOutOfRangeException(string.Format("Skia unable to read image {0}", inputPath));
}
- //_logger.Info("Color type {0}", bitmap.Info.ColorType);
+ //_logger.LogInformation("Color type {0}", bitmap.Info.ColorType);
var originalImageSize = new ImageSize(bitmap.Width, bitmap.Height);
@@ -548,9 +548,7 @@ namespace Emby.Drawing.Skia
using (var resizedBitmap = new SKBitmap(width, height))//, bitmap.ColorType, bitmap.AlphaType))
{
// scale image
- var resizeMethod = SKBitmapResizeMethod.Lanczos3;
-
- bitmap.Resize(resizedBitmap, resizeMethod);
+ bitmap.ScalePixels(resizedBitmap, SKFilterQuality.High);
// If all we're doing is resizing then we can stop now
if (!hasBackgroundColor && !hasForegroundColor && blur == 0 && !hasIndicator)
@@ -558,8 +556,11 @@ namespace Emby.Drawing.Skia
_fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(outputPath));
using (var outputStream = new SKFileWStream(outputPath))
{
- resizedBitmap.Encode(outputStream, skiaOutputFormat, quality);
- return outputPath;
+ using (var pixmap = new SKPixmap(new SKImageInfo(width, height), resizedBitmap.GetPixels()))
+ {
+ pixmap.Encode(outputStream, skiaOutputFormat, quality);
+ return outputPath;
+ }
}
}
@@ -593,8 +594,7 @@ namespace Emby.Drawing.Skia
// If foreground layer present then draw
if (hasForegroundColor)
{
- Double opacity;
- if (!Double.TryParse(options.ForegroundLayer, out opacity))
+ if (!Double.TryParse(options.ForegroundLayer, out double opacity))
{
opacity = .4;
}
@@ -610,7 +610,10 @@ namespace Emby.Drawing.Skia
_fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(outputPath));
using (var outputStream = new SKFileWStream(outputPath))
{
- saveBitmap.Encode(outputStream, skiaOutputFormat, quality);
+ using (var pixmap = new SKPixmap(new SKImageInfo(width, height), saveBitmap.GetPixels()))
+ {
+ pixmap.Encode(outputStream, skiaOutputFormat, quality);
+ }
}
}
}
@@ -660,7 +663,7 @@ namespace Emby.Drawing.Skia
}
catch (Exception ex)
{
- _logger.ErrorException("Error drawing indicator overlay", ex);
+ _logger.LogError(ex, "Error drawing indicator overlay");
}
}
diff --git a/Emby.Drawing.Skia/StripCollageBuilder.cs b/Emby.Drawing.Skia/StripCollageBuilder.cs
index 32f0b6585..a98450e08 100644
--- a/Emby.Drawing.Skia/StripCollageBuilder.cs
+++ b/Emby.Drawing.Skia/StripCollageBuilder.cs
@@ -49,7 +49,10 @@ namespace Emby.Drawing.Skia
{
using (var outputStream = new SKFileWStream(outputPath))
{
- bitmap.Encode(outputStream, GetEncodedFormat(outputPath), 90);
+ using (var pixmap = new SKPixmap(new SKImageInfo(width, height), bitmap.GetPixels()))
+ {
+ pixmap.Encode(outputStream, GetEncodedFormat(outputPath), 90);
+ }
}
}
}
@@ -60,7 +63,10 @@ namespace Emby.Drawing.Skia
{
using (var outputStream = new SKFileWStream(outputPath))
{
- bitmap.Encode(outputStream, GetEncodedFormat(outputPath), 90);
+ using (var pixmap = new SKPixmap(new SKImageInfo(width, height), bitmap.GetPixels()))
+ {
+ pixmap.Encode(outputStream, GetEncodedFormat(outputPath), 90);
+ }
}
}
}
@@ -83,9 +89,8 @@ namespace Emby.Drawing.Skia
for (int i = 0; i < 4; i++)
{
- int newIndex;
- using (var currentBitmap = GetNextValidImage(paths, imageIndex, out newIndex))
+ using (var currentBitmap = GetNextValidImage(paths, imageIndex, out int newIndex))
{
imageIndex = newIndex;
@@ -98,7 +103,7 @@ namespace Emby.Drawing.Skia
int iWidth = (int)Math.Abs(iHeight * currentBitmap.Width / currentBitmap.Height);
using (var resizeBitmap = new SKBitmap(iWidth, iHeight, currentBitmap.ColorType, currentBitmap.AlphaType))
{
- currentBitmap.Resize(resizeBitmap, SKBitmapResizeMethod.Lanczos3);
+ currentBitmap.ScalePixels(resizeBitmap, SKFilterQuality.High);
// crop image
int ix = (int)Math.Abs((iWidth - iSlice) / 2);
using (var image = SKImage.FromBitmap(resizeBitmap))
@@ -116,7 +121,7 @@ namespace Emby.Drawing.Skia
using (var reflectionBitmap = new SKBitmap(croppedBitmap.Width, croppedBitmap.Height / 2, croppedBitmap.ColorType, croppedBitmap.AlphaType))
{
// resize to half height
- croppedBitmap.Resize(reflectionBitmap, SKBitmapResizeMethod.Lanczos3);
+ currentBitmap.ScalePixels(reflectionBitmap, SKFilterQuality.High);
using (var flippedBitmap = new SKBitmap(reflectionBitmap.Width, reflectionBitmap.Height, reflectionBitmap.ColorType, reflectionBitmap.AlphaType))
using (var flippedCanvas = new SKCanvas(flippedBitmap))
@@ -164,8 +169,7 @@ namespace Emby.Drawing.Skia
currentIndex = 0;
}
- SKEncodedOrigin origin;
- bitmap = SkiaEncoder.Decode(paths[currentIndex], false, _fileSystem, null, out origin);
+ bitmap = SkiaEncoder.Decode(paths[currentIndex], false, _fileSystem, null, out SKEncodedOrigin origin);
imagesTested[currentIndex] = 0;
@@ -194,9 +198,8 @@ namespace Emby.Drawing.Skia
{
for (var y = 0; y < 2; y++)
{
- int newIndex;
- using (var currentBitmap = GetNextValidImage(paths, imageIndex, out newIndex))
+ using (var currentBitmap = GetNextValidImage(paths, imageIndex, out int newIndex))
{
imageIndex = newIndex;
@@ -208,7 +211,7 @@ namespace Emby.Drawing.Skia
using (var resizedBitmap = new SKBitmap(cellWidth, cellHeight, currentBitmap.ColorType, currentBitmap.AlphaType))
{
// scale image
- currentBitmap.Resize(resizedBitmap, SKBitmapResizeMethod.Lanczos3);
+ currentBitmap.ScalePixels(resizedBitmap, SKFilterQuality.High);
// draw this image into the strip at the next position
var xPos = x * cellWidth;