Files
WorkFlowCheck/src/WorkFlowCheck.MAUI/Helper/ImageHelper.cs
T
2026-09-12 18:19:29 +02:00

63 lines
2.2 KiB
C#

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;
}
}
}