Skip to content

Commit 6f045b4

Browse files
committed
支持传递参数
1 parent c374ff0 commit 6f045b4

File tree

5 files changed

+71
-10
lines changed

5 files changed

+71
-10
lines changed

src/MediaConverters/MediaConverters.Lib/Imaging/Optimizations/EnhancedGraphicsMetafileOptimization.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,12 @@ private static ImageFileOptimizationResult ConvertWithSkiaWmfRenderer(ImageFileO
150150

151151
context.LogMessage($"Start convert wmf to png by SkiaWmfRenderer. File:'{file}'");
152152

153-
if (SkiaWmfRenderHelper.TryConvertToPng(file, outputPngFile, requestWidth, requestHeight) && File.Exists(outputPngFile.FullName))
153+
var skiaWmfRenderConfiguration = new SkiaWmfRenderConfiguration()
154+
{
155+
RequestWidth = requestWidth,
156+
RequestHeight = requestHeight
157+
};
158+
if (SkiaWmfRenderHelper.TryConvertToPng(file, outputPngFile, skiaWmfRenderConfiguration) && File.Exists(outputPngFile.FullName))
154159
{
155160
context.LogMessage($"Success converted wmf to png by SkiaWmfRenderer. File:'{file}' Output:'{outputPngFile}'");
156161

src/MediaConverters/SkiaWmfRenderer/src/SkiaWmfRenderer/Rendering/WmfRenderStatus.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ namespace SkiaWmfRenderer.Rendering;
1111

1212
class WmfRenderStatus : IDisposable
1313
{
14+
public WmfRenderStatus(SkiaWmfRenderConfiguration renderConfiguration)
15+
{
16+
RenderConfiguration = renderConfiguration;
17+
}
18+
19+
public SkiaWmfRenderConfiguration RenderConfiguration { get; }
20+
1421
public required float CurrentX { get; set; }
1522
public required float CurrentY { get; set; }
1623

@@ -114,9 +121,18 @@ public void UpdateSkiaTextStatus(string text)
114121
{
115122
typeface = SKTypeface.FromFamilyName(CurrentFontName, (SKFontStyleWeight) FontWeight,
116123
SKFontStyleWidth.Normal, IsItalic ? SKFontStyleSlant.Italic : SKFontStyleSlant.Upright);
124+
125+
if (typeface is null || typeface.GlyphCount == 0)
126+
{
127+
var fontFile = Path.Join(AppContext.BaseDirectory, $"{CurrentFontName}.ttf");
128+
if (File.Exists(fontFile))
129+
{
130+
typeface = SKTypeface.FromFile(fontFile);
131+
}
132+
}
117133
}
118134

119-
Console.WriteLine($"CurrentFontName='{CurrentFontName}' get the SKTypeface {(typeface is null ? "is null" : "not null")}. SKTypeface={typeface?.FamilyName} GlyphCount={typeface?.GlyphCount}. Text={text}");
135+
RenderConfiguration.LogMessage($"CurrentFontName='{CurrentFontName}' get the SKTypeface {(typeface is null ? "is null" : "not null")}. SKTypeface={typeface?.FamilyName} GlyphCount={typeface?.GlyphCount}. Text={text}");
120136

121137
skFont.Typeface = typeface;
122138

src/MediaConverters/SkiaWmfRenderer/src/SkiaWmfRenderer/Rendering/WmfRenderer.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ namespace SkiaWmfRenderer.Rendering;
1010
class WmfRenderer
1111
{
1212
public required WmfDocument WmfDocument { get; init; }
13-
public required int RequestWidth { get; init; }
14-
public required int RequestHeight { get; init; }
13+
public required SkiaWmfRenderConfiguration RenderConfiguration { get; init; }
14+
private int RequestWidth => RenderConfiguration.RequestWidth;
15+
private int RequestHeight => RenderConfiguration.RequestHeight;
1516

1617
/// <summary>
1718
/// 图片压缩的最大宽度
@@ -35,7 +36,7 @@ public bool TryRender([NotNullWhen(true)] out SKBitmap? skBitmap)
3536
var width = Math.Abs(format.Right - format.Left);
3637
var height = Math.Abs(format.Bottom - format.Top);
3738

38-
using WmfRenderStatus renderStatus = new()
39+
using WmfRenderStatus renderStatus = new(RenderConfiguration)
3940
{
4041
CurrentX = x,
4142
CurrentY = y,
@@ -53,6 +54,8 @@ public bool TryRender([NotNullWhen(true)] out SKBitmap? skBitmap)
5354
{
5455
var result = TryRenderInner(canvas, renderStatus);
5556

57+
RenderConfiguration.LogMessage($"[WmfRenderer] TryRenderInner={result}; IsIncludeText={renderStatus.IsIncludeText} && (IsIncludeOtherEncoding={renderStatus.IsIncludeOtherEncoding} || IsIncludeTextWithDx={renderStatus.IsIncludeTextWithDx})");
58+
5659
if (result)
5760
{
5861
return true;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
namespace SkiaWmfRenderer;
2+
3+
public class SkiaWmfRenderConfiguration
4+
{
5+
/// <summary>
6+
/// 请求的宽度,0 表示不限制
7+
/// </summary>
8+
public int RequestWidth { get; set; } = 0;
9+
10+
/// <summary>
11+
/// 请求的高度,0 表示不限制
12+
/// </summary>
13+
public int RequestHeight { get; set; } = 0;
14+
15+
/// <summary>
16+
/// 是否启用调试模式,输出日志到控制台
17+
/// </summary>
18+
public bool? ShouldLogToConsole { get; init; } = false;
19+
20+
/// <summary>
21+
/// 符号字体文件的路径
22+
/// </summary>
23+
public FileInfo? SymbolFontFile { get; init; }
24+
25+
/// <summary>
26+
/// 字体文件夹
27+
/// </summary>
28+
public DirectoryInfo? FontFolder { get; init; }
29+
30+
internal void LogMessage(string message)
31+
{
32+
if (ShouldLogToConsole is true)
33+
{
34+
Console.WriteLine(message);
35+
}
36+
}
37+
}

src/MediaConverters/SkiaWmfRenderer/src/SkiaWmfRenderer/SkiaWmfRenderHelper.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ namespace SkiaWmfRenderer;
1111

1212
public static class SkiaWmfRenderHelper
1313
{
14-
public static bool TryConvertToPng(FileInfo wmfFile, FileInfo outputPngFile, int requestWidth = 0, int requestHeight = 0)
14+
public static bool TryConvertToPng(FileInfo wmfFile, FileInfo outputPngFile, SkiaWmfRenderConfiguration? configuration = null)
1515
{
16-
if (!TryRender(wmfFile, requestWidth, requestHeight, out var skBitmap))
16+
configuration ??= new SkiaWmfRenderConfiguration();
17+
if (!TryRender(wmfFile, configuration, out var skBitmap))
1718
{
1819
return false;
1920
}
@@ -24,7 +25,7 @@ public static bool TryConvertToPng(FileInfo wmfFile, FileInfo outputPngFile, int
2425
return true;
2526
}
2627

27-
public static bool TryRender(FileInfo wmfFile, int requestWidth, int requestHeight, [NotNullWhen(true)] out SKBitmap? skBitmap)
28+
public static bool TryRender(FileInfo wmfFile, SkiaWmfRenderConfiguration configuration, [NotNullWhen(true)] out SKBitmap? skBitmap)
2829
{
2930
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
3031

@@ -46,8 +47,7 @@ public static bool TryRender(FileInfo wmfFile, int requestWidth, int requestHeig
4647
var wmfRenderer = new WmfRenderer()
4748
{
4849
WmfDocument = wmfDocument,
49-
RequestWidth = requestWidth,
50-
RequestHeight = requestHeight,
50+
RenderConfiguration = configuration
5151
};
5252

5353
return wmfRenderer.TryRender(out skBitmap);

0 commit comments

Comments
 (0)