ชั้นการเติมด้วยการเติมแบบรูปแบบ
บทความนี้สาธิตวิธีการเติมชั้น 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 Aspose.PSD APIs ได้เปิดเผยวิธีการที่มีประสิทธิภาพและง่ายต่อการใช้เพื่อบรรลุวัตถุประสงค์นี้ Aspose.PSD ได้เปิดเผยคลาส GradientColorPoint และ GradientTransparencyPoint เพื่อเพิ่มอิสระมาในชั้น
ขั้นตอนการเติม the PSD ชั้นด้วยการเติมไล่สีมีความง่ายดังนี้:
- โหลดไฟล์ PSD เป็นภาพโดยใช้วิธีการของโรงงาน Load ที่เปิดเผยโดยคลาส Image
- ตั้งค่าสมบัติของวัตถุ FillLayer
- สร้างรายการ ColorPoints ด้วยสีที่ต้องการและตำแหน่งของสี
- สร้างรายการของจุดโปร่งใสที่ต้องการโปร่งใสและตำแหน่งของจุดโปร่งใส
- เรียกใช้วิธีการ FillLayer.Update
- บันทึกผลลัพธ์
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการเติมไล่สีเข้ากับชั้น PSD
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir_PSD(); | |
string sourceFileName = dataDir + "ComplexGradientFillLayer.psd"; | |
string outputFile = dataDir + "ComplexGradientFillLayer_output.psd"; | |
var image = (PsdImage)Image.Load(sourceFileName); | |
using (image) | |
{ | |
foreach (var layer in image.Layers) | |
{ | |
if (layer is FillLayer) | |
{ | |
var fillLayer = (FillLayer)layer; | |
if (fillLayer.FillSettings.FillType != FillType.Gradient) | |
{ | |
throw new Exception("Wrong Fill Layer"); | |
} | |
var settings = (IGradientFillSettings)fillLayer.FillSettings; | |
if ( | |
Math.Abs(settings.Angle - 45) > 0.25 || | |
settings.Dither != true || | |
settings.AlignWithLayer != false || | |
settings.Reverse != false || | |
Math.Abs(settings.HorizontalOffset - (-39)) > 0.25 || | |
Math.Abs(settings.VerticalOffset - (-5)) > 0.25 || | |
settings.TransparencyPoints.Length != 3 || | |
settings.ColorPoints.Length != 2 || | |
Math.Abs(100.0 - settings.TransparencyPoints[0].Opacity) > 0.25 || | |
settings.TransparencyPoints[0].Location != 0 || | |
settings.TransparencyPoints[0].MedianPointLocation != 50 || | |
settings.ColorPoints[0].Color != Color.FromArgb(203, 64, 140) || | |
settings.ColorPoints[0].Location != 0 || | |
settings.ColorPoints[0].MedianPointLocation != 50) | |
{ | |
throw new Exception("Gradient Fill was not read correctly"); | |
} | |
settings.Angle = 0.0; | |
settings.Dither = false; | |
settings.AlignWithLayer = true; | |
settings.Reverse = true; | |
settings.HorizontalOffset = 25; | |
settings.VerticalOffset = -15; | |
var colorPoints = new List<IGradientColorPoint>(settings.ColorPoints); | |
var transparencyPoints = new List<IGradientTransparencyPoint>(settings.TransparencyPoints); | |
colorPoints.Add(new GradientColorPoint() | |
{ | |
Color = Color.Violet, | |
Location = 4096, | |
MedianPointLocation = 75 | |
}); | |
colorPoints[1].Location = 3000; | |
transparencyPoints.Add(new GradientTransparencyPoint() | |
{ | |
Opacity = 80.0, | |
Location = 4096, | |
MedianPointLocation = 25 | |
}); | |
transparencyPoints[2].Location = 3000; | |
settings.ColorPoints = colorPoints.ToArray(); | |
settings.TransparencyPoints = transparencyPoints.ToArray(); | |
fillLayer.Update(); | |
image.Save(outputFile, new PsdOptions(image)); | |
break; | |
} | |
} | |
} |
นี่คือตัวอย่างอีกอันที่ใช้คุณสมบัติ GradientFillSettings.GradientType เพื่อเติมชั้น PSD ด้วยการเติมไล่ Aspose.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 }); | |
} | |
} |
การสนับสนุนคุณสมบัติการยืดสำหรับชั้นเติมสีสายไล่
บทความนี้สาธิตวิธีการยืด FillLayer ด้วยการเติมสีสายไล่โดยใช้ Aspose.PSD for .NET สำหรับวัตถ์นี้ เพิ่มคุณสมบัติใหม่ Scale ใน IGradientFillSettings
ด้านล่างเป็นการสาธิตโค้ดที่แสดงวิธีการใช้คุณสมบัติ Scale
// 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 และเข้าถึงชั้น Fill และตั้งค่าสีโดยใช้รูปแบบ 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; | |
} | |
} | |
} |