Files
PCK-Studio/PCK-Studio/Internal/Serializer/ImageSerializer.cs
miku-666 034a3a0336 Rename 'IPckFileSerializer' to 'IPckSerializer'
To be more consistent with the name of 'IPckDeserializer'
2024-04-21 01:20:53 +02:00

39 lines
1.1 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.Serializer
{
internal sealed class ImageSerializer : IPckSerializer<Image>
{
public static readonly ImageSerializer DefaultSerializer = new ImageSerializer();
public void Serialize(Image obj, ref PckFileData file)
{
var stream = new MemoryStream();
try
{
if (Path.GetExtension(file.Filename) == ".tga")
TGASerializer.SerializeToStream(stream, obj);
else
obj.Save(stream, ImageFormat.Png);
file.SetData(stream.ToArray());
}
catch (Exception ex)
{
Trace.TraceError($"Failed to serialize image to pck file data({file.Filename}).");
Debug.WriteLine(ex.Message);
}
}
}
}