我想在C#中更新一个特定文本层的psd文件(总是一样的(用他的名字找)).我搜索并测试了很多库,都没有用.最近,我在GitHub上发现了这个库。https:/github.combizzehdeeSystem.Drawing.PSD。
我下载了源码,试了一下,在C#中,我可以访问我指定的层,但是,我不能更新它。"层 "类中,有不同的属性,但我不能控制它们。
我想知道是否有谁可以帮我测试一下,并帮助我理解这个库,我问过作者,但他最后一次行动是在去年......
我希望你能帮助我!
非常感谢您。
你可以试试Aspose.PSD。它支持简单的文本层编辑和按部分编辑文本层。https:/docs.aspose.comdisplaypsdnetWorking+With+Text+Layers。
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
foreach (var layer in psdImage.Layers)
{
if (layer is TextLayer)
{
TextLayer textLayer = layer as TextLayer;
textLayer.UpdateText("test update", new Point(0, 0), 15.0f, Color.Purple);
}
}
psdImage.Save(dataDir + "UpdateTextLayerInPSDFile_out.psd");
}
有文字部分的例子。
string sourceFile = dataDir + "text212.psd";
string outputFile = dataDir + "Output_text212.psd";
using (var img = (PsdImage)Image.Load(sourceFile))
{
TextLayer textLayer = (TextLayer)img.Layers[1];
IText textData = textLayer.TextData;
ITextStyle defaultStyle = textData.ProducePortion().Style;
ITextParagraph defaultParagraph = textData.ProducePortion().Paragraph;
defaultStyle.FillColor = Color.DimGray;
defaultStyle.FontSize = 51;
textData.Items[1].Style.Strikethrough = true;
ITextPortion[] newPortions = textData.ProducePortions(new string[]
{
"E=mc", "2\r", "Bold", "Italic\r",
"Lowercasetext"
},
defaultStyle,
defaultParagraph);
newPortions[0].Style.Underline = true; // edit text style "E=mc"
newPortions[1].Style.FontBaseline = FontBaseline.Superscript; // edit text style "2\r"
newPortions[2].Style.FauxBold = true; // edit text style "Bold"
newPortions[3].Style.FauxItalic = true; // edit text style "Italic\r"
newPortions[3].Style.BaselineShift = -25; // edit text style "Italic\r"
newPortions[4].Style.FontCaps = FontCaps.SmallCaps; // edit text style "Lowercasetext"
foreach (var newPortion in newPortions)
{
textData.AddPortion(newPortion);
}
textData.UpdateLayerData();
img.Save(outputFile);
}