翻譯|使用教程|編輯:李顯亮|2020-06-10 10:58:58.477|閱讀 458 次
概述:用于.NET API的Aspose.PSD提供了許多與PSD,PSB,AI和許多其他文件格式一起使用的功能。讓我們探討以下與在PSD文件中添加圖層有關的用例。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
照片是反映信息的一種非常有用的方法。PSD格式文件用于創建圖像。但是,可能會出現類似沿同一行編輯多個Photoshop文件的情況。例如,照片處理應用程序可能需要與其他操作一起在多個Photoshop文檔中添加一個圖層。
用于.NET API的Aspose.PSD提供了許多與PSD,PSB,AI和許多其他文件格式一起使用的功能。讓我們探討以下與在PSD文件中添加圖層有關的用例:
Aspose.PSD for .NET已升級至V20.5,如果你還沒有用過Aspose.PSD可以點擊這里下載最新版測試。
用于.NET API的Aspose.PSD支持在PSD文件中創建填充層。您不一定需要從現有文件加載圖層。只需按照以下步驟在運行時在PSD文件中添加填充層:
以下代碼段顯示了如何使用C#在Photoshop中添加填充層:
string outputFilePath = Path.Combine(dataDir, "output.psd");
using (var image = new PsdImage(100, 100))
{
FillLayer colorFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Color);
colorFillLayer.DisplayName = "Color Fill Layer";
image.AddLayer(colorFillLayer);
FillLayer gradientFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Gradient);
gradientFillLayer.DisplayName = "Gradient Fill Layer";
image.AddLayer(gradientFillLayer);
FillLayer patternFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Pattern);
patternFillLayer.DisplayName = "Pattern Fill Layer";
patternFillLayer.Opacity = 50;
image.AddLayer(patternFillLayer);
image.Save(outputFilePath);
}
此代碼段將生成指定尺寸的PSD文件,其中以下屏幕截圖顯示了三個填充層的名稱,這些名稱與上述C#代碼所設置的完全相同:
讓我們看看如何從現有的Photoshop文件中添加圖層。以下是添加現有填充層的可能性:
圖案填充可能具有圖像,線條或陰影來填充該區域。您需要按照以下步驟在PSD圖像中添加帶有Patten Fill的圖層:
下面的代碼段顯示了如何使用C#使用模式填充添加填充層:
// Add support of Fill layers: Pattern
string sourceFileName = dataDir + "PatternFillLayer.psd";
string exportPath = dataDir + "PatternFillLayer_Edited.psd";
double tolerance = 0.0001;
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
foreach (var layer in im.Layers)
{
if (layer is FillLayer)
{
FillLayer fillLayer = (FillLayer)layer;
PatternFillSettings fillSettings = (PatternFillSettings)fillLayer.FillSettings;
if (fillSettings.HorizontalOffset != -46 ||
fillSettings.VerticalOffset != -45 ||
fillSettings.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5" ||
fillSettings.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares" ||
fillSettings.AlignWithLayer != true ||
fillSettings.Linked != true ||
fillSettings.PatternHeight != 64 ||
fillSettings.PatternWidth != 64 ||
fillSettings.PatternData.Length != 4096 ||
Math.Abs(fillSettings.Scale - 50) > tolerance)
{
throw new Exception("PSD Image was read wrong");
}
// Editing
fillSettings.Scale = 300;
fillSettings.HorizontalOffset = 2;
fillSettings.VerticalOffset = -20;
fillSettings.PatternData = new int[]
{
Color.Red.ToArgb(), Color.Blue.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Red.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Blue.ToArgb(), Color.Red.ToArgb()
};
fillSettings.PatternHeight = 3;
fillSettings.PatternWidth = 3;
fillSettings.AlignWithLayer = false;
fillSettings.Linked = false;
fillSettings.PatternId = Guid.NewGuid().ToString();
fillLayer.Update();
break;
}
}
im.Save(exportPath);
}
可以使用漸變填充在Photoshop文檔中填充圖層。用于.NET API的Aspose.PSD支持以下類型的漸變填充:
以下是添加帶有漸變填充的圖層的步驟:
下面的代碼段基于這些步驟,并顯示了如何使用C#在Photoshop文檔中添加GradientFill層:
string fileName = dataDir + "FillLayerGradient.psd";
GradientType[] gradientTypes = new[]
{
GradientType.Linear, GradientType.Radial, GradientType.Angle, GradientType.Reflected, GradientType.Diamond
};
using (var image = Image.Load(fileName))
{
PsdImage psdImage = (PsdImage)image;
FillLayer fillLayer = (FillLayer)psdImage.Layers[0];
GradientFillSettings fillSettings = (GradientFillSettings)fillLayer.FillSettings;
foreach (var gradientType in gradientTypes)
{
fillSettings.GradientType = gradientType;
fillLayer.Update();
psdImage.Save(fileName + "_" + gradientType.ToString() + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
}
此代碼段將生成五個不同的文件,每個文件在PSD文件的層中填充不同的漸變。
可以在Photoshop文檔(PSD文件)中添加帶有顏色填充的圖層。請按照以下步驟添加或創建帶有顏色填充的填充層:
以下代碼段基于上述步驟,這些步驟顯示了如何使用C#在Photoshop文檔中添加填充層:
string sourceFileName = dataDir + "ColorFillLayer.psd";
string exportPath = dataDir + "ColorFillLayer_output.psd";
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
foreach (var layer in im.Layers)
{
if (layer is FillLayer)
{
var fillLayer = (FillLayer)layer;
if (fillLayer.FillSettings.FillType != FillType.Color)
{
throw new Exception("Wrong Fill Layer");
}
var settings = (IColorFillSettings)fillLayer.FillSettings;
settings.Color = Color.Red;
fillLayer.Update();
im.Save(exportPath);
break;
}
}
}
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn