עבודה עם שכבות
יצירת קבוצת שכבות
קבוצת שכבות מורכבת משכבה אחת או יותר ועוזרת לארגן שכבות דומות או קשורות. באמצעות Aspose.PSD עבור .NET תוכל ליצור קבוצת שכבות. למטרה זו, נוסף שיט חדש AddLayerGroup במחלקת PsdImage כדי להוסיף את קבוצת השכבות.
השלבים ליצירת קבוצות שכבות פשוטים כמו שלמטה:
- צור מופע של תמונה באמצעות מחלקת PsdImage עם רוחב, גובה ואפשרויות תמונה מסוימות.
- צור LayerGroup עם השם והאינדקס שצוינו.
- צור מופע של מחלקת השכבה והקצה לה תמונת PSD.
- הוסף את השכבה שנוצרה לקבוצת השכבות באמצעות השיטה AddLayer שניתנה על ידי מחלקת LayerGroup.
- שמור את התוצאות.
קטע הקוד הבא מראה כיצד ליצור קבוצת שכבות.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string inputFile = dataDir + "ButtonTemp.psd"; | |
var createOptions = new PsdOptions(); | |
createOptions.Source = new FileCreateSource(inputFile, false); | |
createOptions.Palette = new PsdColorPalette(new Color[] { Color.Green }); | |
using (var psdImage = (PsdImage)Image.Create(createOptions, 500, 500)) | |
{ | |
LayerGroup group1 = psdImage.AddLayerGroup("Group 1", 0, true); | |
Layer layer1 = new Layer(psdImage); | |
layer1.Name = "Layer 1"; | |
group1.AddLayer(layer1); | |
LayerGroup group2 = group1.AddLayerGroup("Group 2", 1); | |
Layer layer2 = new Layer(psdImage); | |
layer2.Name = "Layer 2"; | |
group2.AddLayer(layer2); | |
Layer layer3 = new Layer(psdImage); | |
layer3.Name = "Layer 3"; | |
group2.AddLayer(layer3); | |
Layer layer4 = new Layer(psdImage); | |
layer4.Name = "Layer 4"; | |
group1.AddLayer(layer4); | |
psdImage.Save(dataDir + "LayerGroups_out.psd"); | |
} |
שינוי שם שכבה
באפשרותך להשתמש בשם כלשהו שתרצה, אך נהל טיפול נפוץ הוא להשתמש בתיאור כללי של האובייקט או אלמנט שנמצא בשכבה זו. מאמר זה מדגיש כיצד ניתן לשנות את שם השכבה באמצעות Aspose.PSD עבור .NET. למטרה זו, נוסף מאפיין חדש DisplayName במחלקת Layer כדי להציג שם שכבה בצורה תקינה. נמצא כי כאשר פוטושופ שומר על שם שכבה באמצעות המאפיין Name, אז תווים קוריאים מאוחסנים כ-63 בערך ASCII. זאת אומרת, אם ברצונך להציג שם שכבה בצורה תקינה, כדאי להשתמש במאפיין DisplayName מאחר שהמאפיין Name אינו תומך בתווים קוריאים.
שטח הקוד הבא מראה כיצד ניתן לשנות את שם השכבה.
// 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(); | |
// make changes in layer names and save it | |
using (var image = (PsdImage)Image.Load(dataDir + "Korean_layers.psd")) | |
{ | |
for (int i = 0; i < image.Layers.Length; i++) | |
{ | |
var layer = image.Layers[i]; | |
// set new value into DisplayName property | |
layer.DisplayName += "_changed"; | |
} | |
image.Save(dataDir + "Korean_layers_output.psd"); | |
} |
תמיכה בשכבות מקושרות
קישור שכבות הוא כלול לשכבות. אם אתה מקשר שתי או יותר שכבות, אז תוכל לבצע שינויים מסוימים לשתי השכבות שמחוברות. לדוגמה, אם אתה מחיל המרה לשכבה אחת, אז זה ייחוד לכל השכבות המקושרות אחרות. מאמר זה מדגיש כיצד ניתן לקבל ולבטל קישור שכבות משתמש ב Aspose.PSD.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
{ | |
Layer[] layers = psd.Layers; | |
// link all layers in one linked group | |
short layersLinkGroupId = psd.LinkedLayersManager.LinkLayers(layers); | |
// gets id for one layer | |
short linkGroupId = psd.LinkedLayersManager.GetLinkGroupId(layers[0]); | |
if (layersLinkGroupId != linkGroupId) | |
{ | |
throw new Exception("layersLinkGroupId and linkGroupId are not equal."); | |
} | |
// gets all linked layers by link group id. | |
Layer[] linkedLayers = psd.LinkedLayersManager.GetLayersByLinkGroupId(linkGroupId); | |
// unlink each layer from group | |
foreach (var linkedLayer in linkedLayers) | |
{ | |
psd.LinkedLayersManager.UnlinkLayer(linkedLayer); | |
} | |
// retrieves NULL for a link group ID that has no layers in the group. | |
linkedLayers = psd.LinkedLayersManager.GetLayersByLinkGroupId(linkGroupId); | |
if (linkedLayers != null) | |
{ | |
throw new Exception("The linkedLayers field is not NULL."); | |
} | |
psd.Save(dataDir + "LinkedLayerexample_output.psd"); | |
} |