using System.IO;
//using System.Linq;
// using MarketData.Utils;
//using System.Drawing.Imaging;
//using System.Runtime.InteropServices;
//using System.Drawing;
using SkiaSharp;
namespace MarketData.CNNProcessing
{
public static class BitmapExtensions
{
// This call is used to generate the CNN training, test, and validation bitmaps..
// I noticed a large difference in the accuracy or the model when the quality parameter is 100.
// I therefore intentionally not using EncoderParameters to specify quality but instead taking the default quality.
///
/// Save JPG encoded bitmap
///
///
///
public static void SaveJPG100(this SKBitmap bitmap, string filename)
{
if(File.Exists(filename))File.Delete(filename);
using FileStream stream = new FileStream(filename, FileMode.Create, FileAccess.Write);
using SKImage image = SKImage.FromBitmap(bitmap);
using SKData encodedImage = image.Encode(SKEncodedImageFormat.Jpeg,100);
encodedImage.SaveTo(stream);
}
///
/// Save JPG encoded bitmap
///
///
///
public static void SaveJPG100(this SKBitmap bitmap, Stream stream)
{
using SKImage image = SKImage.FromBitmap(bitmap);
using SKData encodedImage = image.Encode(SKEncodedImageFormat.Jpeg,100);
encodedImage.SaveTo(stream);
}
///
/// Save PNG encoded bitmap
///
///
///
public static void SavePNG100(this SKBitmap bitmap, string filename)
{
if(File.Exists(filename))File.Delete(filename);
using FileStream stream = new FileStream(filename, FileMode.Create, FileAccess.Write);
using SKImage image = SKImage.FromBitmap(bitmap);
using SKData encodedImage = image.Encode(SKEncodedImageFormat.Png,100);
encodedImage.SaveTo(stream);
}
///
/// Save PNG encoded bitmap
///
///
///
public static void SavePNG100(this SKBitmap bitmap, Stream stream)
{
using SKImage image = SKImage.FromBitmap(bitmap);
using SKData encodedImage = image.Encode(SKEncodedImageFormat.Png,100);
encodedImage.SaveTo(stream);
}
}
}