diff --git a/APIControllers/PictureUpload.cs b/APIControllers/PictureUpload.cs index db6e257..dae9f77 100644 --- a/APIControllers/PictureUpload.cs +++ b/APIControllers/PictureUpload.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc; using NeDvachAPI.DBControllers; -using SkiaSharp; + namespace NeDvachAPI.Controllers { @@ -13,46 +13,30 @@ namespace NeDvachAPI.Controllers [HttpPost(Name = "UploadPicture")] public async Task ReceivePost([FromForm] IFormFile PostPicture) { - var supportedTypes = new[] { ".jpg", ".png", ".jpeg" }; + string receivedFileName = PostPicture.FileName; string fName = Path.GetFileNameWithoutExtension(receivedFileName); string fExtention = Path.GetExtension(receivedFileName); string previevFileName = fName + 's' + fExtention; Console.WriteLine("Расширение файла: " + fExtention); - - if (supportedTypes.Contains(fExtention.ToLower())) //file type check + + if (ImageController.CheckExtention(fExtention)) //file type check { ///Local Buffer File Part string filePath; string previevPath; filePath = Directory.GetCurrentDirectory() + "\\Buffer\\" + receivedFileName; previevPath = Directory.GetCurrentDirectory() + "\\Buffer\\" + previevFileName; + //creating original file buffer Stream picBuffer = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); PostPicture.CopyTo(picBuffer); picBuffer.Close(); - ///resize part - - bool resizeImage(string picPath, string smallPath, int width, int height) - { - var dstInfo = new SKImageInfo(height, width); - var bitmap = SKBitmap.Decode(picPath); - - var image = SKImage.FromBitmap(bitmap.Resize(dstInfo, SKFilterQuality.Medium)); - var data = image.Encode(SKEncodedImageFormat.Jpeg, 90); - - using (var stream = new FileStream(smallPath, FileMode.Create, FileAccess.Write)) - data.SaveTo(stream); - - data.Dispose(); - image.Dispose(); - bitmap.Dispose(); - return true; - } - resizeImage(filePath, previevPath, 300, 400); + //resizing + ImageController.ResizeImage(filePath, previevPath, 300, 400); ///MinIo part - await MinIOchat.PictureUpload(previevPath, receivedFileName, "thread-pics-small"); - JsonResult picAdress = new(await MinIOchat.PictureUpload(filePath, receivedFileName, "thread-pics")); + await MinIOchat.PictureUpload(previevPath, receivedFileName, "thread-pics-small"); //upload thumbnail + JsonResult picAdress = new(await MinIOchat.PictureUpload(filePath, receivedFileName, "thread-pics")); //upload fullsize Console.WriteLine("Загружен файл:" + "http://static.vdk2ch.ru:15555/thread-pics/" + receivedFileName); return picAdress; } diff --git a/DBControllers/ImageController.cs b/DBControllers/ImageController.cs new file mode 100644 index 0000000..4209072 --- /dev/null +++ b/DBControllers/ImageController.cs @@ -0,0 +1,36 @@ + +using SkiaSharp; + +namespace NeDvachAPI.DBControllers +{ + public class ImageController + { + public static bool CheckExtention(string extentionToCheck) + { + var supportedTypes = new[] { ".jpg", ".png", ".jpeg" }; + if (supportedTypes.Contains(extentionToCheck.ToLower())) + { + return true; + } + else return false; + } + + public static bool ResizeImage(string picPath, string smallPath, int width, int height) + { + var dstInfo = new SKImageInfo(height, width); + var bitmap = SKBitmap.Decode(picPath); + + var image = SKImage.FromBitmap(bitmap.Resize(dstInfo, SKFilterQuality.Medium)); + var data = image.Encode(SKEncodedImageFormat.Jpeg, 90); + + using (var stream = new FileStream(smallPath, FileMode.Create, FileAccess.Write)) + data.SaveTo(stream); + + data.Dispose(); + image.Dispose(); + bitmap.Dispose(); + return true; + } + } +} +