This commit is contained in:
parent
34a625361e
commit
35139d66a2
@ -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<JsonResult> 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;
|
||||
}
|
||||
|
36
DBControllers/ImageController.cs
Normal file
36
DBControllers/ImageController.cs
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user