پشتیبانی از لایه‌های پر شده

لایه‌های پرشده با الگو

این مقاله نحوه پر کردن لایه PSD با پردازنده الگو را نشان می دهد. یک الگو* * تصویر، رنگ، سایه یا خط است که برای پر کردن یک ناحیه از یک تصویر استفاده می شود. لطفا از Aspose.PSD.FileFormats.Psd.Layers.FillLayer برای اضافه کردن یک الگو به لایه PSD استفاده کنید. کد‌های زیر یک پرونده PSD را بارگیری می‌کنند، به کلاس Filllayer دسترسی می‌یابند و الگو را با استفاده از خصوصیات PatternFillSettings تنظیم می‌کنند.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// 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);
}

در زیر مثالی دیگر آمده که نشان می دهد چگونه Aspose.PSD الگو را با استفاده از FillLayer و IPatternFillSettings اجرا می کند.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string destName = dataDir + "PatternFillLayer_out.psd";
// Load an existing image into an instance of PsdImage class
using (var image = (PsdImage)Image.Load(sourceFile))
{
foreach (var layer in image.Layers)
{
if (layer is FillLayer)
{
var fillLayer = (FillLayer)layer;
var settings = (IPatternFillSettings)fillLayer.FillSettings;
settings.HorizontalOffset = -5;
settings.VerticalOffset = 12;
settings.Scale = 300;
settings.Linked = true;
settings.PatternData = new int[]
{
Color.Black.ToArgb(), Color.Red.ToArgb(),
Color.Green.ToArgb(), Color.Blue.ToArgb(),
Color.White.ToArgb(), Color.AliceBlue.ToArgb(),
Color.Violet.ToArgb(), Color.Chocolate.ToArgb(),
Color.IndianRed.ToArgb(), Color.DarkOliveGreen.ToArgb(),
Color.CadetBlue.ToArgb(), Color.YellowGreen.ToArgb(),
Color.Black.ToArgb(), Color.Azure.ToArgb(),
Color.ForestGreen.ToArgb(), Color.Sienna.ToArgb(),
};
settings.PatternHeight = 4;
settings.PatternWidth = 4;
settings.PatternName = "$$$/Presets/Patterns/ColorfulSquare=Colorful Square New\0";
settings.PatternId = Guid.NewGuid().ToString() + "\0";
fillLayer.Update();
break;
}
}
image.Save(destName, new PsdOptions(image));
}

لایه‌های پر شده با پر کردن گرادیانت

این مقاله نحوه استفاده از پر کردن گرادیانت برای پر کردن لایه PSD را نشان می‌دهد. API‌های Aspose.PSD متدهای کارآمد و آسان برای رسیدن به این هدف ارائه کرده‌اند. Aspose.PSD کلاس های GradientColorPoint و GradientTransparencyPoint را برای اضافه کردن اثر گرادیانت به یک لایه ارائه داده است.

مراحل پر کردن لایه PSD با پر کردن گرادیانت به شرح زیر است:

  • با استفاده از متد کارخانه Load ارائه شده توسط کلاس Image یک پرونده PSD را به عنوان تصویر بارگیری کنید.
  • خصوصیات تنظیمات شی FillLayer را تنظیم کنید.
  • یک لیست از ColorPoints با رنگ‌های مورد نیاز و موقعیت رنگ ایجاد کنید.
  • یک لیست از نقاط شفافیت با شفافیت و موقعیت نقطه شفافیت مورد نیاز ایجاد کنید.
  • متد FillLayer.Update را فراخوانی کنید
  • نتایج را ذخیره کنید.

کد زیر نشان می دهد چگونه گرادیانت گرادیانت به لایه PSD اضافه کنید.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
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 });
}
}

مثال دیگری که از خصوصیت GradientFillSettings.GradientType برای پر کردن لایه PSD با پر کردن گرادیانت استفاده میکند، بیان می شود. Aspose.PSD از طریق شماره گرادیانت‌ها زیر را از طریق شماره گرادیانت ها پشتیبانی می کند:

  • GradientType.Linear: در یک گرادیانت خطی، رنگ‌ها از دمای شروع به انتها در یک خط ریخته شده است.
  • GradientType.Radial: در گرادیانت شعاعی، رنگ‌ها از نقطه شروع در یک الگوی دایره‌ای بیرون می آیند.
  • GradientType.Angle: در یک گرادیانت زاویه، گرادیان از نقطه شروع در جهت‌های مخالف مخالف مخالف مخالف می گردد.
  • GradientType.Reflected: در گرادیانت بازتابی، رنگ بر روی هر دو طرف نقطه شروع بازتاب می شود.
  • GradientType.Diamond: گرادیانت الماس شکل مانند الماس از نقطه شروع ایجاد می کند.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
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 });
}
}

پشتیبانی از خاصیت مقیاس برای لایه پرکردن گرادیانت

این مقاله نحوه اندازه‌گیری لایه FillLayer با پر کردن گرادیانت با استفاده از Aspose.PSD برای .NET را نشان می دهد. به این منظور، یک خصیه جدید به نام مقیاس به تنظیمات FillLayer اضافه شد.

در زیر، نمایش کد نشان می دهد چگونه از خصیه مقیاس استفاده کنیم.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
using (var image = (PsdImage)Image.Load(dataDir + "FillLayerGradient.psd"))
{
// getting a fill layer
FillLayer fillLayer = null;
foreach (var layer in image.Layers)
{
fillLayer = layer as FillLayer;
if (fillLayer != null)
{
break;
}
}
var settings = fillLayer.FillSettings as IGradientFillSettings;
// update scale value
settings.Scale = 200;
fillLayer.Update(); // Updates pixels data
image.Save(dataDir + "scaledImage.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

لایه‌های پر شده با رنگ پرکردن

این مقاله نحوه پر کردن لایه PSD با رنگ را نشان می دهد. لطفا از کلاس Psd.Layers.FillLayer برای اضافه کردن رنگ به لایه PSD استفاده کنید. کد زیر یک پرونده PSD را بارگیری می کند، به کلاس لایه پرشده دسترسی پیدا می کند و رنگ را با استفاده از FillLayer.FillSettings تنظیم می‌کند.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
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;
}
}
}