Skip to content
This repository was archived by the owner on Sep 2, 2023. It is now read-only.

Commit cbb4966

Browse files
author
Awbugl
committed
Add StackBlur
1 parent 50f3eb9 commit cbb4966

File tree

5 files changed

+353
-15
lines changed

5 files changed

+353
-15
lines changed

Andreal/Andreal.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<TargetFramework>net6.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
8+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
89
</PropertyGroup>
910

1011
<ItemGroup>

Andreal/UI/BackGround.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.Drawing.Drawing2D;
33
using System.Drawing.Imaging;
44
using System.Drawing.Text;
5-
using System.Runtime.InteropServices;
65
using Andreal.UI.Model;
76
using Path = Andreal.Core.Path;
87

@@ -60,16 +59,9 @@ internal void Draw(params IGraphicsModel[] graphicsModelCollection)
6059
foreach (var i in graphicsModelCollection) i.Draw(GraphicsFromBackGround());
6160
}
6261

63-
[DllImport(@"Andreal\Other\StackBlurHost.dll", CallingConvention = CallingConvention.StdCall)]
64-
private static extern void StackBlurHost(IntPtr imagePixelBuffer, int imageWidth, int imageHeight, int imageStride,
65-
int roundSize);
66-
67-
internal BackGround BlurImage(int roundSize)
62+
internal BackGround Blur(byte round)
6863
{
69-
var bm = Bitmap.LockBits(new(0, 0, Bitmap.Width, Bitmap.Height), ImageLockMode.ReadWrite,
70-
PixelFormat.Format32bppArgb);
71-
StackBlurHost(bm.Scan0, bm.Width, bm.Height, bm.Stride, roundSize);
72-
Bitmap.UnlockBits(bm);
64+
StackBlur.StackBlurRGBA32(Bitmap, round);
7365
return this;
7466
}
7567
}

Andreal/UI/ImageGenerator/ArcBackgroundGenerator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ private async Task<BackGround> GenerateArcV1(Path path)
2626
using var song = await _info.GetSongImg();
2727
using var temp = song.Cut(new(0, 87, 512, 341));
2828
var background = new BackGround(temp, 1440, 960);
29-
using var masktmp = background.BlurImage(20).Cut(new(50, 50, 1340, 860)).BlurImage(80);
29+
using var masktmp = background.Blur(20).Cut(new(50, 50, 1340, 860)).Blur(80);
3030
background.FillColor(_info.MainColor);
3131
background.Draw(new ImageModel(Path.ArcaeaBg1Mask, 0, 0, 1440, 960), new ImageModel(masktmp, 50, 50, 1340, 860),
3232
new ImageModel(Path.ArcaeaDivider, 100, 840, 1240),
@@ -52,14 +52,14 @@ private async Task<BackGround> GenerateArcV2(Path path)
5252
{
5353
using var song = await _info.GetSongImg();
5454
using var temp = song.Cut(new(0, 112, 512, 288));
55-
var background = new BackGround(temp, 1920, 1080).BlurImage(60);
55+
var background = new BackGround(temp, 1920, 1080).Blur(60);
5656
background.FillColor(_info.MainColor);
5757
background.Draw(new TextWithShadowModel("Play PTT", Font.Exo36, 123, 355),
5858
new TextWithShadowModel("Pure", Font.Exo32, 127, 455),
5959
new TextWithShadowModel("Far", Font.Exo32, 127, 525),
6060
new TextWithShadowModel("Lost", Font.Exo32, 410, 525),
6161
new TextWithShadowModel("Played at", Font.Exo32, 127, 595),
62-
new ImageModel(new BackGround(song.Cut(new(0, 19, 512, 48)), 1920, 180).BlurImage(20), 0, 740),
62+
new ImageModel(new BackGround(song.Cut(new(0, 19, 512, 48)), 1920, 180).Blur(20), 0, 740),
6363
new LineModel(Color.White, 3, new(0, 740), new(1920, 740)),
6464
new LineModel(Color.White, 3, new(0, 920), new(1920, 920)),
6565
new LineModel(Color.White, 1, new(0, 705), new(1920, 705)),
@@ -85,7 +85,7 @@ private async Task<BackGround> GenerateArcV3(Path path)
8585
{
8686
using var song = await _info.GetSongImg();
8787
using var temp = song.Cut(new(78, 0, 354, 512));
88-
var background = new BackGround(temp, 1000, 1444).BlurImage(10);
88+
var background = new BackGround(temp, 1000, 1444).Blur(10);
8989
background.FillColor(Color.White, 100);
9090
background.Draw(new ImageModel(Path.ArcaeaBg3Mask((int)_info.PartnerSide), 0, 0, 1000),
9191
new TextOnlyModel(_info.GetSongName(30), Font.Beatrice36, Color.Black, 500, 860,

Andreal/UI/ImageGenerator/PjskCurrentEventImageGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private BackGround GeneratePjskEvent(Path path)
7474
using var logo
7575
= WebHelper.GetImage($"https://assets.pjsek.ai/file/pjsekai-assets/ondemand/event/{_currentEvent.AssetbundleName}/logo/logo/logo.png");
7676

77-
var bg = bitmap.Cut(new(0, 0, 1000, 1000)).BlurImage(40);
77+
var bg = bitmap.Cut(new(0, 0, 1000, 1000)).Blur(40);
7878
bg.FillColor(Color.Black, 80);
7979

8080
bg.Draw(new ImageModel(logo, 200, 50, 600, 300),

0 commit comments

Comments
 (0)