diff --git a/src/WorkFlowCheck.MAUI/Helper/ImageHelper.cs b/src/WorkFlowCheck.MAUI/Helper/ImageHelper.cs
new file mode 100644
index 0000000..9c0f0cc
--- /dev/null
+++ b/src/WorkFlowCheck.MAUI/Helper/ImageHelper.cs
@@ -0,0 +1,62 @@
+using SkiaSharp;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WorkFlowCheck.MAUI.Helper
+{
+ public static class ImageHelper
+ {
+ public static string ResizeAndSaveImage(byte[] imageBytes, int id, int targetWidth = 50)
+ {
+ // Átméretezett fájl elérési útja
+ var filename = Path.Combine(FileSystem.CacheDirectory, $"wfc_{id}_photo.jpg");
+
+ if (File.Exists(filename))
+ {
+ try
+ {
+ File.Delete(filename);
+ // opcionálisan logolhatsz
+ // Console.WriteLine($"Törölve: {filename}");
+ }
+ catch (Exception ex)
+ {
+ //Console.WriteLine($"Hiba a fájl törlésekor: {ex.Message}");
+ }
+ }
+
+ // Eredeti kép betöltése
+ using var inputStream = new MemoryStream(imageBytes);
+ using var original = SKBitmap.Decode(inputStream);
+
+ if (original == null)
+ throw new InvalidOperationException("A kép nem olvasható vagy hibás.");
+
+ // Új szélesség és magasság arányosan
+
+ int targetHeight = (int)(original.Height * ((double)targetWidth / original.Width));
+
+ // Új üres bitmap létrehozása
+ using var resizedSurface = SKSurface.Create(new SKImageInfo(targetWidth, targetHeight));
+ using var canvas = resizedSurface.Canvas;
+
+ canvas.Clear(SKColors.White); // választható háttérszín
+
+ var srcRect = new SKRect(0, 0, original.Width, original.Height);
+ var destRect = new SKRect(0, 0, targetWidth, targetHeight);
+ canvas.DrawBitmap(original, srcRect, destRect);
+
+ using var resizedImage = resizedSurface.Snapshot();
+ using var imageData = resizedImage.Encode(SKEncodedImageFormat.Jpeg, 90);
+
+ // Mentés fájlba
+ using var fileStream = File.OpenWrite(filename);
+ imageData.SaveTo(fileStream);
+
+ return filename;
+ }
+ }
+}
diff --git a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListRowCS.cs b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListRowCS.cs
index 87756c7..57a3021 100644
--- a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListRowCS.cs
+++ b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListRowCS.cs
@@ -1,23 +1,27 @@
-using System.ComponentModel;
+using SkiaSharp;
+using System.ComponentModel;
using WorkFlowCheck.Common.DTO;
+using WorkFlowCheck.MAUI.Helper;
namespace WorkFlowCheck.MAUI.Pages.CheckList
{
public class CheckListRowCS : INotifyPropertyChanged
{
private byte[] _photoBytes;
- private ImageSource? _photo;
+ //private ImageSource? _photo;
+ private string? _photoPath;
public event PropertyChangedEventHandler PropertyChanged;
-
+
public int Id { get; set; }
- public string AnswerType { get; set; } = null!;
+ public string AnswerType { get; set; } = null!;
public int RowIndex { get; set; }
public string OperationDescription { get; set; } = null!;
public string GroupName { get; set; } = null!;
public string Answer { get; set; } = null!;
public bool? AnswerYes { get; set; } = null!;
public bool? AnswerNo { get; set; } = null!;
+
public byte[] PhotoBytes
{
get => _photoBytes;
@@ -26,37 +30,58 @@ namespace WorkFlowCheck.MAUI.Pages.CheckList
if (_photoBytes != value)
{
_photoBytes = value;
- _photo = null;
- OnPropertyChanged(nameof(PhotoBytes));
- OnPropertyChanged(nameof(Photo));
+ //_photo = null;
+ _photoPath = null;
+ //OnPropertyChanged(nameof(PhotoBytes));
+ //OnPropertyChanged(nameof(Photo));
+ OnPropertyChanged(nameof(PhotoPath));
}
}
}
- public ImageSource Photo
+ //public ImageSource Photo
+ //{
+ // get
+ // {
+ // if (_photo == null)
+ // {
+ // if (PhotoBytes != null && PhotoBytes.Length > 0)
+ // {
+ // try
+ // {
+ // var bytesCopy = PhotoBytes.ToArray();
+ // _photo = ImageSource.FromStream(() => new MemoryStream(bytesCopy));
+ // }
+ // catch
+ // {
+ // _photo = ImageSource.FromFile("noimage.png");
+ // }
+ // }
+ // else
+ // {
+ // _photo = ImageSource.FromFile("noimage.png");
+ // }
+ // }
+
+ // return _photo;
+ // }
+ //}
+
+ public string PhotoPath
{
get
{
- if (_photo == null)
+ if (_photoPath == null)
{
if (PhotoBytes != null && PhotoBytes.Length > 0)
{
- try
- {
- var bytesCopy = PhotoBytes.ToArray();
- _photo = ImageSource.FromStream(() => new MemoryStream(bytesCopy));
- }
- catch
- {
- _photo = ImageSource.FromFile("noimage.png");
- }
+ _photoPath = ImageHelper.ResizeAndSaveImage(PhotoBytes, Id, 100);
}
else
{
- _photo = ImageSource.FromFile("noimage.png");
+ _photoPath = "noimage.png";
}
}
-
- return _photo;
+ return _photoPath;
}
}
diff --git a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml
index e477a95..6e7421f 100644
--- a/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml
+++ b/src/WorkFlowCheck.MAUI/Pages/CheckList/CheckListWorkPage.xaml
@@ -130,12 +130,12 @@
+ Source="{Binding PhotoPath}" >