Обновяване на PSD Пълнителен слой с помощта на Python
Преглед
За да създадете обикновен слой, можете да използвате функцията create_regular_layer, предоставена в кода. Тази функция приема параметрите за лявата, горната, ширината и височината чрез подаване на параметрите, за да определите позицията и размера на слоя. Тя създава нов слой, задава неговите граници и го пълни с определен цвят.
За създаване на слой за цветово пълнене, можете да използвате метода create_instance на класа FillLayer с параметъра FillType.COLOR. След създаване на слоя за пълнене можете да достъпите неговите настройки за пълнене, използвайки свойството fill_settings и да зададете цвета, използвайки свойството color на класа ColorFillSettings. В предоставения код цветът е зададен на Color.coral. Свойството за ограничаване на слоя за пълнене е зададено на 1, което прави слоя да действа като маска за ограничаване.
За създаване на слой с пълнене с градиент, можете да използвате метода create_instance на класа FillLayer с параметъра FillType.GRADIENT. Подобно на слоя за цветово пълнене, можете да достъпите настройките за пълнене, използвайки свойството fill_settings и да зададете цветовите точки за градиента и точките за прозрачност. В предоставения код цветовите точки за градиента се определят чрез класа GradientColorPoint, а точките за прозрачност се определят чрез класа GradientTransparencyPoint. Също така свойството за ограничаване на слоя за пълнене е зададено на 1.
За създаване на слой с пълнене с шаблон, можете да използвате метода create_instance на класа FillLayer с параметъра FillType.PATTERN. Отново можете да достъпите настройките за пълнене, използвайки свойството fill_settings и да зададете данните за шаблона и други свойства. В предоставения код данните за шаблона се определят чрез класа PatternFillSettings, а свойството за ограничаване е зададено на 1.
След като създадете слоевете за пълнене, можете да ги добавите към изображението PSD чрез метода add_layer. Можете също така да указвате името за показване и други свойства за всеки слой за пълнене.
Накрая можете да запазите изображението PSD и съответното PNG изображение, използвайки предоставения код. Опциите за PNG са зададени за използване на truecolor с алфа за прозрачност.
Моля, проверете пълния пример.
Пример
def create_regular_layer(left, top, width, height): | |
layer = Layer() | |
layer.left = left | |
layer.top = top | |
layer.right = left + width | |
layer.bottom = top + height | |
color = Color.aqua.to_argb() | |
test_data = [color] * width * height | |
layer.save_argb_32_pixels(layer.bounds, test_data) | |
return layer | |
def FillLayerManipulationTest(): | |
outputPng = "all_fill_layers.png" | |
outputPsd = "all_fill_layers.psd" | |
with PsdImage(100, 100) as image: | |
layer1 = create_regular_layer(0, 0, 50, 50) | |
image.add_layer(layer1) | |
colorFillLayer = FillLayer.create_instance(FillType.COLOR) | |
colorFillSettings = cast(ColorFillSettings, colorFillLayer.fill_settings) | |
colorFillSettings.color = Color.coral | |
colorFillLayer.clipping = 1 | |
colorFillLayer.display_name = "Color Fill Layer" | |
image.add_layer(colorFillLayer) | |
layer2 = create_regular_layer(50, 0, 50, 50) | |
image.add_layer(layer2) | |
gradientColorPoints = [ | |
GradientColorPoint(Color.red, 2048, 50), | |
GradientColorPoint(Color.green, 3072, 50), | |
GradientColorPoint(Color.blue, 4096, 50) | |
] | |
tp1 = GradientTransparencyPoint() | |
tp1.location = 0 | |
tp1.median_point_location = 50 | |
tp1.opacity = 128 | |
tp2 = GradientTransparencyPoint() | |
tp2.location = 2048 | |
tp2.median_point_location = 50 | |
tp2.opacity = 176 | |
gradientTransparencyPoints = [tp1, tp2] | |
gradientFillLayer = FillLayer.create_instance(FillType.GRADIENT) | |
gradientFillLayer.display_name = "Gradient Fill Layer" | |
gradientFillSettings = cast(GradientFillSettings, gradientFillLayer.fill_settings) | |
gradientFillSettings.color_points = gradientColorPoints | |
gradientFillSettings.angle = -45 | |
gradientFillSettings.transparency_points = gradientTransparencyPoints | |
gradientFillLayer.clipping = 1 | |
image.add_layer(gradientFillLayer) | |
layer3 = create_regular_layer(0, 50, 50, 50) | |
image.add_layer(layer3) | |
patternFillLayer = FillLayer.create_instance(FillType.PATTERN) | |
patternFillLayer.display_name = "Pattern Fill Layer" | |
patternFillLayer.opacity = 50 | |
patternFillLayer.clipping = 1 | |
patternFillSettings = cast(PatternFillSettings, patternFillLayer.fill_settings) | |
patternFillSettings.pattern_data = [ | |
Color.red.to_argb(), Color.transparent.to_argb(), Color.transparent.to_argb(), | |
Color.transparent.to_argb(), Color.red.to_argb(), Color.transparent.to_argb(), | |
Color.transparent.to_argb(), Color.transparent.to_argb(), Color.red.to_argb() | |
] | |
patternFillSettings.pattern_width = 3 | |
patternFillSettings.pattern_height = 3 | |
image.add_layer(patternFillLayer) | |
pngOpt = PngOptions() | |
pngOpt.color_type = PngColorType.TRUECOLOR_WITH_ALPHA | |
image.save(outputPng, pngOpt) | |
image.save(outputPsd) |