63 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|