skbitmap migration

This commit is contained in:
Not Officer
2022-01-14 17:08:47 +01:00
parent 10de896db9
commit 082917d3cb
26 changed files with 110 additions and 101 deletions

View File

@@ -607,7 +607,7 @@ namespace FModel.ViewModels
if (Provider.TrySaveAsset(fullPath, out var data))
{
using var stream = new MemoryStream(data) {Position = 0};
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, SKImage.FromBitmap(SKBitmap.Decode(stream)));
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, SKBitmap.Decode(stream));
}
break;
}
@@ -617,7 +617,15 @@ namespace FModel.ViewModels
{
using var stream = new MemoryStream(data) { Position = 0 };
var svg = new SkiaSharp.Extended.Svg.SKSvg(new SKSize(512, 512));
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, SKImage.FromPicture(svg.Load(stream), new SKSizeI(512, 512)));
svg.Load(stream);
var bitmap = new SKBitmap(512, 512);
using (var canvas = new SKCanvas(bitmap))
using (var paint = new SKPaint { IsAntialias = true, FilterQuality = SKFilterQuality.Medium })
{
canvas.DrawPicture(svg.Picture, paint);
}
TabControl.SelectedTab.AddImage(fileName.SubstringBeforeLast("."), false, bitmap);
}
break;
}

View File

@@ -310,7 +310,8 @@ namespace FModel.ViewModels
private BitmapImage GetImageSource(SKBitmap bitmap)
{
if (bitmap == null) return null;
using var stream = SKImage.FromBitmap(bitmap).Encode().AsStream();
using var data = bitmap.Encode(SKEncodedImageFormat.Png, 100);
using var stream = data.AsStream();
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;

View File

@@ -419,12 +419,12 @@ namespace FModel.ViewModels
}
else if (parameters.Diffuse is UTexture2D diffuse)
{
m.AlbedoMap = new TextureModel(diffuse.Decode()?.Encode().AsStream());
m.AlbedoMap = new TextureModel(diffuse.Decode()?.Encode(SKEncodedImageFormat.Png, 100).AsStream());
}
if (parameters.Normal is UTexture2D normal)
{
m.NormalMap = new TextureModel(normal.Decode()?.Encode().AsStream());
m.NormalMap = new TextureModel(normal.Decode()?.Encode(SKEncodedImageFormat.Png, 100).AsStream());
}
if (parameters.Specular is UTexture2D specular)
@@ -540,7 +540,7 @@ namespace FModel.ViewModels
if (parameters.HasTopEmissiveTexture && parameters.Emissive is UTexture2D emissive && parameters.EmissiveColor is { A: > 0 } emissiveColor)
{
m.EmissiveColor = new Color4(emissiveColor.R, emissiveColor.G, emissiveColor.B, emissiveColor.A);
m.EmissiveMap = new TextureModel(emissive.Decode()?.Encode().AsStream());
m.EmissiveMap = new TextureModel(emissive.Decode()?.Encode(SKEncodedImageFormat.Png, 100).AsStream());
}
}
else

View File

@@ -1,4 +1,4 @@
using System;
using System;
using FModel.Extensions;
using FModel.Framework;
using FModel.Settings;
@@ -25,7 +25,7 @@ namespace FModel.ViewModels
public string ExportName { get; }
public byte[] ImageBuffer { get; set; }
public TabImage(string name, bool rnn, SKImage img)
public TabImage(string name, bool rnn, SKBitmap img)
{
ExportName = name;
RenderNearestNeighbor = rnn;
@@ -61,11 +61,11 @@ namespace FModel.ViewModels
}
}
private void SetImage(SKImage img)
private void SetImage(SKBitmap bitmap)
{
_img = img;
_bmp = bitmap;
using var data = _img.Encode(NoAlpha ? SKEncodedImageFormat.Jpeg : SKEncodedImageFormat.Png, 100);
using var data = _bmp.Encode(NoAlpha ? SKEncodedImageFormat.Jpeg : SKEncodedImageFormat.Png, 100);
using var stream = new MemoryStream(ImageBuffer = data.ToArray(), false);
var image = new BitmapImage();
image.BeginInit();
@@ -76,8 +76,8 @@ namespace FModel.ViewModels
Image = image;
}
private SKImage _img;
private void ResetImage() => SetImage(_img);
private SKBitmap _bmp;
private void ResetImage() => SetImage(_bmp);
}
public class TabItem : ViewModel
@@ -223,7 +223,7 @@ namespace FModel.ViewModels
}
public void AddImage(UTexture2D texture) => AddImage(texture.Name, texture.bRenderNearestNeighbor, texture.Decode());
public void AddImage(string name, bool rnn, SKImage img)
public void AddImage(string name, bool rnn, SKBitmap img)
{
Application.Current.Dispatcher.Invoke(() =>
{