remove image sharp from gtk3 project
This commit is contained in:
parent
d3f6126113
commit
d0f4d77ab4
7 changed files with 48 additions and 46 deletions
|
@ -42,9 +42,7 @@
|
||||||
<PackageVersion Include="Silk.NET.Vulkan" Version="2.16.0" />
|
<PackageVersion Include="Silk.NET.Vulkan" Version="2.16.0" />
|
||||||
<PackageVersion Include="Silk.NET.Vulkan.Extensions.EXT" Version="2.16.0" />
|
<PackageVersion Include="Silk.NET.Vulkan.Extensions.EXT" Version="2.16.0" />
|
||||||
<PackageVersion Include="Silk.NET.Vulkan.Extensions.KHR" Version="2.16.0" />
|
<PackageVersion Include="Silk.NET.Vulkan.Extensions.KHR" Version="2.16.0" />
|
||||||
<PackageVersion Include="SixLabors.ImageSharp" Version="2.1.8" />
|
|
||||||
<PackageVersion Include="SkiaSharp" Version="2.88.7" />
|
<PackageVersion Include="SkiaSharp" Version="2.88.7" />
|
||||||
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="1.0.0" />
|
|
||||||
<PackageVersion Include="SPB" Version="0.0.4-build32" />
|
<PackageVersion Include="SPB" Version="0.0.4-build32" />
|
||||||
<PackageVersion Include="System.IO.Hashing" Version="8.0.0" />
|
<PackageVersion Include="System.IO.Hashing" Version="8.0.0" />
|
||||||
<PackageVersion Include="System.Management" Version="8.0.0" />
|
<PackageVersion Include="System.Management" Version="8.0.0" />
|
||||||
|
|
|
@ -13,7 +13,6 @@ using Ryujinx.UI.Common.Configuration;
|
||||||
using Ryujinx.UI.Common.Helper;
|
using Ryujinx.UI.Common.Helper;
|
||||||
using Ryujinx.UI.Common.SystemInfo;
|
using Ryujinx.UI.Common.SystemInfo;
|
||||||
using Ryujinx.UI.Widgets;
|
using Ryujinx.UI.Widgets;
|
||||||
using SixLabors.ImageSharp.Formats.Jpeg;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
@ -162,12 +161,6 @@ namespace Ryujinx
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// Sets ImageSharp Jpeg Encoder Quality.
|
|
||||||
SixLabors.ImageSharp.Configuration.Default.ImageFormatsManager.SetEncoder(JpegFormat.Instance, new JpegEncoder()
|
|
||||||
{
|
|
||||||
Quality = 100,
|
|
||||||
});
|
|
||||||
|
|
||||||
string localConfigurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ReleaseInformation.ConfigName);
|
string localConfigurationPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ReleaseInformation.ConfigName);
|
||||||
string appDataConfigurationPath = Path.Combine(AppDataManager.BaseDirPath, ReleaseInformation.ConfigName);
|
string appDataConfigurationPath = Path.Combine(AppDataManager.BaseDirPath, ReleaseInformation.ConfigName);
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
<PackageReference Include="OpenTK.Graphics" />
|
<PackageReference Include="OpenTK.Graphics" />
|
||||||
<PackageReference Include="SPB" />
|
<PackageReference Include="SPB" />
|
||||||
<PackageReference Include="SharpZipLib" />
|
<PackageReference Include="SharpZipLib" />
|
||||||
<PackageReference Include="SixLabors.ImageSharp" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -13,16 +13,13 @@ using Ryujinx.Input.HLE;
|
||||||
using Ryujinx.UI.Common.Configuration;
|
using Ryujinx.UI.Common.Configuration;
|
||||||
using Ryujinx.UI.Common.Helper;
|
using Ryujinx.UI.Common.Helper;
|
||||||
using Ryujinx.UI.Widgets;
|
using Ryujinx.UI.Widgets;
|
||||||
using SixLabors.ImageSharp;
|
using SkiaSharp;
|
||||||
using SixLabors.ImageSharp.Formats.Png;
|
|
||||||
using SixLabors.ImageSharp.PixelFormats;
|
|
||||||
using SixLabors.ImageSharp.Processing;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Image = SixLabors.ImageSharp.Image;
|
|
||||||
using Key = Ryujinx.Input.Key;
|
using Key = Ryujinx.Input.Key;
|
||||||
using ScalingFilter = Ryujinx.Graphics.GAL.ScalingFilter;
|
using ScalingFilter = Ryujinx.Graphics.GAL.ScalingFilter;
|
||||||
using Switch = Ryujinx.HLE.Switch;
|
using Switch = Ryujinx.HLE.Switch;
|
||||||
|
@ -404,23 +401,31 @@ namespace Ryujinx.UI
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Image image = e.IsBgra ? Image.LoadPixelData<Bgra32>(e.Data, e.Width, e.Height)
|
var colorType = e.IsBgra ? SKColorType.Bgra8888 : SKColorType.Rgba8888;
|
||||||
: Image.LoadPixelData<Rgba32>(e.Data, e.Width, e.Height);
|
using var image = new SKBitmap(new SKImageInfo(e.Width, e.Height, colorType, SKAlphaType.Premul));
|
||||||
|
|
||||||
if (e.FlipX)
|
Marshal.Copy(e.Data, 0, image.GetPixels(), e.Data.Length);
|
||||||
|
using var surface = SKSurface.Create(image.Info);
|
||||||
|
var canvas = surface.Canvas;
|
||||||
|
|
||||||
|
if (e.FlipX || e.FlipY)
|
||||||
{
|
{
|
||||||
image.Mutate(x => x.Flip(FlipMode.Horizontal));
|
canvas.Clear(SKColors.Transparent);
|
||||||
|
|
||||||
|
float scaleX = e.FlipX ? -1 : 1;
|
||||||
|
float scaleY = e.FlipY ? -1 : 1;
|
||||||
|
|
||||||
|
var matrix = SKMatrix.CreateScale(scaleX, scaleY, image.Width / 2f, image.Height / 2f);
|
||||||
|
|
||||||
|
canvas.SetMatrix(matrix);
|
||||||
}
|
}
|
||||||
|
canvas.DrawBitmap(image, new SKPoint());
|
||||||
|
|
||||||
if (e.FlipY)
|
surface.Flush();
|
||||||
{
|
using var snapshot = surface.Snapshot();
|
||||||
image.Mutate(x => x.Flip(FlipMode.Vertical));
|
using var encoded = snapshot.Encode(SKEncodedImageFormat.Png, 80);
|
||||||
}
|
using var file = File.OpenWrite(path);
|
||||||
|
encoded.SaveTo(file);
|
||||||
image.SaveAsPng(path, new PngEncoder()
|
|
||||||
{
|
|
||||||
ColorType = PngColorType.Rgb,
|
|
||||||
});
|
|
||||||
|
|
||||||
image.Dispose();
|
image.Dispose();
|
||||||
|
|
||||||
|
|
|
@ -9,16 +9,13 @@ using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
using Ryujinx.Common.Memory;
|
using Ryujinx.Common.Memory;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
using Ryujinx.UI.Common.Configuration;
|
using Ryujinx.UI.Common.Configuration;
|
||||||
using SixLabors.ImageSharp;
|
using SkiaSharp;
|
||||||
using SixLabors.ImageSharp.Formats.Png;
|
|
||||||
using SixLabors.ImageSharp.PixelFormats;
|
|
||||||
using SixLabors.ImageSharp.Processing;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Buffers.Binary;
|
using System.Buffers.Binary;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Image = SixLabors.ImageSharp.Image;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Ryujinx.UI.Windows
|
namespace Ryujinx.UI.Windows
|
||||||
{
|
{
|
||||||
|
@ -144,9 +141,11 @@ namespace Ryujinx.UI.Windows
|
||||||
|
|
||||||
stream.Position = 0;
|
stream.Position = 0;
|
||||||
|
|
||||||
Image avatarImage = Image.LoadPixelData<Rgba32>(DecompressYaz0(stream), 256, 256);
|
using var avatarImage = new SKBitmap(new SKImageInfo(256, 256, SKColorType.Rgba8888));
|
||||||
|
var data = DecompressYaz0(stream);
|
||||||
|
Marshal.Copy(data, 0, avatarImage.GetPixels(), data.Length);
|
||||||
|
|
||||||
avatarImage.SaveAsPng(streamPng);
|
avatarImage.Encode(streamPng, SKEncodedImageFormat.Png, 80);
|
||||||
|
|
||||||
_avatarDict.Add(item.FullPath, streamPng.ToArray());
|
_avatarDict.Add(item.FullPath, streamPng.ToArray());
|
||||||
}
|
}
|
||||||
|
@ -170,15 +169,23 @@ namespace Ryujinx.UI.Windows
|
||||||
{
|
{
|
||||||
using MemoryStream streamJpg = MemoryStreamManager.Shared.GetStream();
|
using MemoryStream streamJpg = MemoryStreamManager.Shared.GetStream();
|
||||||
|
|
||||||
Image avatarImage = Image.Load(data, new PngDecoder());
|
using var avatarImage = SKBitmap.Decode(data);
|
||||||
|
using var surface = SKSurface.Create(avatarImage.Info);
|
||||||
|
|
||||||
avatarImage.Mutate(x => x.BackgroundColor(new Rgba32(
|
var background = new SKColor(
|
||||||
(byte)(_backgroundColor.Red * 255),
|
(byte)(_backgroundColor.Red * 255),
|
||||||
(byte)(_backgroundColor.Green * 255),
|
(byte)(_backgroundColor.Green * 255),
|
||||||
(byte)(_backgroundColor.Blue * 255),
|
(byte)(_backgroundColor.Blue * 255),
|
||||||
(byte)(_backgroundColor.Alpha * 255)
|
(byte)(_backgroundColor.Alpha * 255)
|
||||||
)));
|
);
|
||||||
avatarImage.SaveAsJpeg(streamJpg);
|
var canvas = surface.Canvas;
|
||||||
|
canvas.Clear(background);
|
||||||
|
canvas.DrawBitmap(avatarImage, new SKPoint());
|
||||||
|
|
||||||
|
surface.Flush();
|
||||||
|
using var snapshot = surface.Snapshot();
|
||||||
|
using var encoded = snapshot.Encode(SKEncodedImageFormat.Jpeg, 80);
|
||||||
|
encoded.SaveTo(streamJpg);
|
||||||
|
|
||||||
return streamJpg.ToArray();
|
return streamJpg.ToArray();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,15 +4,13 @@ using Ryujinx.HLE.FileSystem;
|
||||||
using Ryujinx.HLE.HOS.Services.Account.Acc;
|
using Ryujinx.HLE.HOS.Services.Account.Acc;
|
||||||
using Ryujinx.UI.Common.Configuration;
|
using Ryujinx.UI.Common.Configuration;
|
||||||
using Ryujinx.UI.Widgets;
|
using Ryujinx.UI.Widgets;
|
||||||
using SixLabors.ImageSharp;
|
using SkiaSharp;
|
||||||
using SixLabors.ImageSharp.Processing;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Image = SixLabors.ImageSharp.Image;
|
|
||||||
|
|
||||||
namespace Ryujinx.UI.Windows
|
namespace Ryujinx.UI.Windows
|
||||||
{
|
{
|
||||||
|
@ -177,13 +175,13 @@ namespace Ryujinx.UI.Windows
|
||||||
|
|
||||||
private void ProcessProfileImage(byte[] buffer)
|
private void ProcessProfileImage(byte[] buffer)
|
||||||
{
|
{
|
||||||
using Image image = Image.Load(buffer);
|
using var image = SKBitmap.Decode(buffer);
|
||||||
|
|
||||||
image.Mutate(x => x.Resize(256, 256));
|
image.Resize(new SKImageInfo(256, 256), SKFilterQuality.High);
|
||||||
|
|
||||||
using MemoryStream streamJpg = MemoryStreamManager.Shared.GetStream();
|
using MemoryStream streamJpg = MemoryStreamManager.Shared.GetStream();
|
||||||
|
|
||||||
image.SaveAsJpeg(streamJpg);
|
image.Encode(streamJpg, SKEncodedImageFormat.Jpeg, 80);
|
||||||
|
|
||||||
_bufferImageProfile = streamJpg.ToArray();
|
_bufferImageProfile = streamJpg.ToArray();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ using SkiaSharp;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Caps
|
namespace Ryujinx.HLE.HOS.Services.Caps
|
||||||
|
@ -117,7 +118,8 @@ namespace Ryujinx.HLE.HOS.Services.Caps
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: The saved JPEG file doesn't have the limitation in the extra EXIF data.
|
// NOTE: The saved JPEG file doesn't have the limitation in the extra EXIF data.
|
||||||
using var bitmap = SKBitmap.Decode(screenshotData, new SKImageInfo(1280, 720, SKColorType.Rgba8888));
|
using var bitmap = new SKBitmap(new SKImageInfo(1280, 720, SKColorType.Rgba8888));
|
||||||
|
Marshal.Copy(screenshotData, 0, bitmap.GetPixels(), screenshotData.Length);
|
||||||
using var data = bitmap.Encode(SKEncodedImageFormat.Jpeg, 80);
|
using var data = bitmap.Encode(SKEncodedImageFormat.Jpeg, 80);
|
||||||
using var file = File.OpenWrite(filePath);
|
using var file = File.OpenWrite(filePath);
|
||||||
data.SaveTo(file);
|
data.SaveTo(file);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue