mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Matrix memory optimisations
This commit is contained in:
@@ -26,8 +26,6 @@ namespace GHelper.AnimeMatrix
|
|||||||
private long lastPresent;
|
private long lastPresent;
|
||||||
private List<double> maxes = new List<double>();
|
private List<double> maxes = new List<double>();
|
||||||
|
|
||||||
private MemoryStream ms = new MemoryStream();
|
|
||||||
|
|
||||||
public AniMatrixControl(SettingsForm settingsForm)
|
public AniMatrixControl(SettingsForm settingsForm)
|
||||||
{
|
{
|
||||||
settings = settingsForm;
|
settings = settingsForm;
|
||||||
@@ -317,18 +315,21 @@ namespace GHelper.AnimeMatrix
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var fs = new FileStream(fileName, FileMode.Open))
|
using (var fs = new FileStream(fileName, FileMode.Open))
|
||||||
|
//using (var ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
ms.SetLength(0);
|
ms.SetLength(0);
|
||||||
fs.CopyTo(ms);
|
fs.CopyTo(ms);
|
||||||
ms.Position = 0;
|
ms.Position = 0;
|
||||||
|
*/
|
||||||
using (Image image = Image.FromStream(ms))
|
using (Image image = Image.FromStream(fs))
|
||||||
{
|
{
|
||||||
ProcessPicture(image);
|
ProcessPicture(image);
|
||||||
Logger.WriteLine("Matrix " + fileName);
|
Logger.WriteLine("Matrix " + fileName);
|
||||||
if (visualise) settings.VisualiseMatrix(image);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fs.Close();
|
||||||
|
if (visualise) settings.VisualiseMatrix(fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@@ -347,6 +348,8 @@ namespace GHelper.AnimeMatrix
|
|||||||
int matrixX = AppConfig.Get("matrix_x", 0);
|
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||||
int matrixY = AppConfig.Get("matrix_y", 0);
|
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||||
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||||
|
int matrixSpeed = AppConfig.Get("matrix_speed", 50);
|
||||||
|
|
||||||
InterpolationMode matrixQuality = (InterpolationMode)AppConfig.Get("matrix_quality", 0);
|
InterpolationMode matrixQuality = (InterpolationMode)AppConfig.Get("matrix_quality", 0);
|
||||||
|
|
||||||
|
|
||||||
@@ -367,7 +370,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
|
|
||||||
Logger.WriteLine("GIF Delay:" + frameDelay);
|
Logger.WriteLine("GIF Delay:" + frameDelay);
|
||||||
StartMatrixTimer(Math.Max(50, frameDelay));
|
StartMatrixTimer(Math.Max(matrixSpeed, frameDelay));
|
||||||
|
|
||||||
//image.SelectActiveFrame(dimension, 0);
|
//image.SelectActiveFrame(dimension, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ namespace GHelper
|
|||||||
|
|
||||||
private float uiScale;
|
private float uiScale;
|
||||||
|
|
||||||
|
Image picture;
|
||||||
|
MemoryStream ms = new MemoryStream();
|
||||||
|
|
||||||
public Matrix()
|
public Matrix()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@@ -55,9 +58,11 @@ namespace GHelper
|
|||||||
|
|
||||||
private void Matrix_FormClosed(object? sender, FormClosingEventArgs e)
|
private void Matrix_FormClosed(object? sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
if (pictureMatrix.Image is not null) pictureMatrix.Image.Dispose();
|
if (picture is not null) picture.Dispose();
|
||||||
|
if (ms is not null) ms.Dispose();
|
||||||
|
|
||||||
pictureMatrix.Dispose();
|
pictureMatrix.Dispose();
|
||||||
Dispose();
|
|
||||||
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,32 +162,48 @@ namespace GHelper
|
|||||||
Left = Program.settingsForm.Left - Width - 5;
|
Left = Program.settingsForm.Left - Width - 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void VisualiseMatrix(Image picture)
|
public void VisualiseMatrix(string fileName)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (pictureMatrix.Image is not null) pictureMatrix.Image.Dispose();
|
if (picture is not null) picture.Dispose();
|
||||||
|
|
||||||
int width = picture.Width;
|
using (var fs = new FileStream(fileName, FileMode.Open))
|
||||||
int height = picture.Height;
|
{
|
||||||
|
|
||||||
int matrixX = AppConfig.Get("matrix_x", 0);
|
ms.SetLength(0);
|
||||||
int matrixY = AppConfig.Get("matrix_y", 0);
|
fs.CopyTo(ms);
|
||||||
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
ms.Position = 0;
|
||||||
|
fs.Close();
|
||||||
|
|
||||||
|
picture = Image.FromStream(ms);
|
||||||
|
|
||||||
|
int width = picture.Width;
|
||||||
|
int height = picture.Height;
|
||||||
|
|
||||||
|
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||||
|
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||||
|
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||||
|
|
||||||
|
|
||||||
float scale = Math.Min((float)panelPicture.Width / (float)width, (float)panelPicture.Height / (float)height) * matrixZoom / 100;
|
float scale = Math.Min((float)panelPicture.Width / (float)width, (float)panelPicture.Height / (float)height) * matrixZoom / 100;
|
||||||
|
|
||||||
pictureMatrix.Width = (int)(width * scale);
|
pictureMatrix.Width = (int)(width * scale);
|
||||||
pictureMatrix.Height = (int)(height * scale);
|
pictureMatrix.Height = (int)(height * scale);
|
||||||
|
|
||||||
|
baseX = panelPicture.Width - pictureMatrix.Width;
|
||||||
|
baseY = 0;
|
||||||
|
|
||||||
|
pictureMatrix.Left = baseX - (int)(matrixX * uiScale);
|
||||||
|
pictureMatrix.Top = baseY - (int)(matrixY * uiScale);
|
||||||
|
|
||||||
|
pictureMatrix.SizeMode = PictureBoxSizeMode.Zoom;
|
||||||
|
pictureMatrix.Image = picture;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
baseX = panelPicture.Width - pictureMatrix.Width;
|
|
||||||
baseY = 0;
|
|
||||||
|
|
||||||
pictureMatrix.Left = baseX - (int)(matrixX * uiScale);
|
|
||||||
pictureMatrix.Top = baseY - (int)(matrixY * uiScale);
|
|
||||||
|
|
||||||
pictureMatrix.SizeMode = PictureBoxSizeMode.Zoom;
|
|
||||||
pictureMatrix.Image = (Image)picture.Clone();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void VisualiseMatrix(Image image)
|
public void VisualiseMatrix(string image)
|
||||||
{
|
{
|
||||||
if (matrix == null || matrix.Text == "") return;
|
if (matrix == null || matrix.Text == "") return;
|
||||||
matrix.VisualiseMatrix(image);
|
matrix.VisualiseMatrix(image);
|
||||||
|
|||||||
Reference in New Issue
Block a user