Added gallery artworks caching
This commit is contained in:
@@ -6,6 +6,8 @@ using MyWebsite.Models;
|
|||||||
using MyWebsite.Models.Databases;
|
using MyWebsite.Models.Databases;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace MyWebsite.Areas.Admin.Controllers
|
namespace MyWebsite.Areas.Admin.Controllers
|
||||||
{
|
{
|
||||||
@@ -50,6 +52,8 @@ namespace MyWebsite.Areas.Admin.Controllers
|
|||||||
System.IO.File.SetAttributes(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery/" + model?.FileName, FileAttributes.Normal);
|
System.IO.File.SetAttributes(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery/" + model?.FileName, FileAttributes.Normal);
|
||||||
System.IO.File.Delete(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery/" + model?.FileName);
|
System.IO.File.Delete(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery/" + model?.FileName);
|
||||||
|
|
||||||
|
UpdateCache();
|
||||||
|
|
||||||
return RedirectToAction("Index");
|
return RedirectToAction("Index");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,6 +83,39 @@ namespace MyWebsite.Areas.Admin.Controllers
|
|||||||
Database.Gallery.Add(model);
|
Database.Gallery.Add(model);
|
||||||
Database.SaveChanges();
|
Database.SaveChanges();
|
||||||
|
|
||||||
|
UpdateCache();
|
||||||
|
|
||||||
|
return RedirectToAction("Index");
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult UpdateCache()
|
||||||
|
{
|
||||||
|
if (Directory.Exists(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery/Cache"))
|
||||||
|
Directory.Delete(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery/Cache", true);
|
||||||
|
|
||||||
|
Thread.Sleep(10);
|
||||||
|
DirectoryInfo cache = Directory.CreateDirectory(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery/Cache");
|
||||||
|
|
||||||
|
foreach (string file in Directory.GetFiles(Directory.GetCurrentDirectory() + "/wwwroot/images/Gallery"))
|
||||||
|
{
|
||||||
|
if (file.EndsWith(".svg", StringComparison.OrdinalIgnoreCase))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
FileInfo info = new FileInfo(file);
|
||||||
|
|
||||||
|
using Bitmap original = new Bitmap(file);
|
||||||
|
using Bitmap resized = new Bitmap(600, (int)(600d / original.Width * original.Height));
|
||||||
|
using Graphics grapics = Graphics.FromImage(resized);
|
||||||
|
|
||||||
|
grapics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;
|
||||||
|
grapics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
|
||||||
|
grapics.DrawImage(original, 0, 0, resized.Width, resized.Height);
|
||||||
|
|
||||||
|
using Stream writeStream = System.IO.File.Open(cache.FullName + "\\" + info.Name + ".jpg", FileMode.Create);
|
||||||
|
resized.Save(writeStream, System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||||
|
}
|
||||||
|
|
||||||
return RedirectToAction("Index");
|
return RedirectToAction("Index");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
<header>
|
<header>
|
||||||
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
 <a asp-action="Index" asp-controller="Admin" asp-area="">Back to main menu</a>
|
||||||
<h1>Gallery</h1>
|
<h1>Gallery</h1>
|
||||||
<a asp-action="Upload" class="comment">//  Upload new</a>
|
<a asp-action="Upload" class="comment">//  Upload new</a><br />
|
||||||
|
<a asp-action="UpdateCache" class="comment">// Cache gallery</a>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
@@ -16,7 +17,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a asp-area="" asp-controller="Gallery" asp-action="Details" asp-route-id="@item.FileName" target="_blank">
|
<a asp-area="" asp-controller="Gallery" asp-action="Details" asp-route-id="@item.FileName" target="_blank">
|
||||||
<img title="@item.Title" src="~/images/Gallery/@item.FileName" />
|
<img title="@item.Title" src="~/images/Gallery/@(item.FileName.EndsWith(".svg", StringComparison.OrdinalIgnoreCase) ? item.FileName : $"Cache/{item.FileName}.jpg")" onerror="this.src = '/images/Gallery/@item.FileName'" />
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
@if (Model.Images.Count > 0)
|
@if (Model.Images.Count > 0)
|
||||||
foreach (ImageModel image in Model.Images)
|
foreach (ImageModel image in Model.Images)
|
||||||
{
|
{
|
||||||
<a asp-action="Details" asp-route-id="@image.FileName"><img title="@image.Title" src="~/images/Gallery/@image.FileName" /></a>
|
<a asp-action="Details" asp-route-id="@image.FileName"><img title="@image.Title" src="~/images/Gallery/@(image.FileName.EndsWith(".svg", StringComparison.OrdinalIgnoreCase) ? image.FileName : $"Cache/{image.FileName}.jpg")" onerror="this.src = '/images/Gallery/@image.FileName'" /></a>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user