部分字体设置时导出图片异常

你好,我这边设置字体 【Roboto-Regular】更新时,导出的图片里面文本部分有阴影,这个是怎么回事?

操作系统:window 10
aspose.psd 版本:25.3.0
效果详见附件
sample.jpg (24.3 KB)

sample.psd.zip (30.9 KB)

代码如下:
var psdImage = (PsdImage)Image.Load(Path.Combine(@“d:\temp”, “sample.psd”),
new PsdLoadOptions() { LoadEffectsResource = true});

foreach (var layer in psdImage.Layers)
{

if (layer.DisplayName == “S1-Text1 Input 1”)
{

var textLayer = (TextLayer)layer;
textLayer.UpdateText("ABCDEFG");
foreach (var portion in textLayer.TextData.Items)
{
	portion.Style.FontName = "Roboto-Regular";
}
textLayer.TextData.UpdateLayerData();

}

}
psdImage.Save(@“d:\temp\sample.jpg”, new JpegOptions { Quality = 100, CompressionType = JpegCompressionMode.Baseline });
psdImage.Dispose();

@yuluojie

你好!关于你提到的在导出图片时文本部分出现阴影的问题,这可能与文本图层的效果设置有关。Aspose.PSD支持多种图层效果,包括阴影效果,这可能会影响文本的外观。

如果你在更新文本时没有特别设置阴影效果,可能是因为该图层之前已经应用了阴影效果。你可以检查并调整图层的效果设置,确保没有不必要的阴影效果被应用。

以下是一个示例代码,展示如何更新文本并确保没有阴影效果:

var psdImage = (PsdImage)Image.Load(Path.Combine(@"d:\temp", "sample.psd"), 
new PsdLoadOptions() { LoadEffectsResource = true });

foreach (var layer in psdImage.Layers)
{
    if (layer.DisplayName == "S1-Text1 Input 1")
    {
        var textLayer = (TextLayer)layer;
        textLayer.UpdateText("ABCDEFG");
        foreach (var portion in textLayer.TextData.Items)
        {
            portion.Style.FontName = "Roboto-Regular";
            // 确保没有阴影效果
            portion.Style.ShadowEffect = null; // 或者根据需要设置为默认值
        }
        textLayer.TextData.UpdateLayerData();
    }
}
psdImage.Save(@"d:\temp\sample.jpg", new JpegOptions { Quality = 100, CompressionType = JpegCompressionMode.Baseline });
psdImage.Dispose();

在这个示例中,确保在更新文本样式时检查并移除任何阴影效果。这样可以避免在导出时出现阴影。

如果问题依然存在,建议检查原始PSD文件中是否有其他图层效果影响文本的显示,或者尝试使用不同的字体设置进行测试。

希望这些信息对你有所帮助!如果有其他问题,请随时询问。

原始的PSD文件没有相关阴影设置

其他的字体设置时没有问题

@yuluojie
请详细说明一下。您使用的 .NET 版本是什么(NET Framework、NET 7+ 等)。您的电脑上安装了 Roboto 字体吗?

目前我无法重现这个问题。