Files
PCK-Studio/PCK-Studio/Internal/Deserializer/ImageDeserializer.cs
2024-04-05 00:32:36 +02:00

40 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OMI.Formats.Pck;
using PckStudio.Interfaces;
using PckStudio.IO.TGA;
namespace PckStudio.Internal.Deserializer
{
internal sealed class ImageDeserializer : IPckDeserializer<Image>
{
public static readonly ImageDeserializer DefaultDeserializer = new ImageDeserializer();
private static Image EmptyImage = new Bitmap(1, 1, PixelFormat.Format32bppArgb);
public Image Deserialize(PckFileData file)
{
using var stream = new MemoryStream(file.Data);
try
{
if (Path.GetExtension(file.Filename) == ".tga")
return TGADeserializer.DeserializeFromStream(stream);
else
return Image.FromStream(stream);
}
catch (Exception ex)
{
Trace.TraceError($"Failed to read image from pck file data({file.Filename}).");
Debug.WriteLine(ex.Message);
return EmptyImage;
}
}
}
}