Pythonを使用したPSDフィルレイヤーの更新

Contents
[ ]

概要

通常のレイヤーを作成するには、コードで提供されるcreate_regular_layer関数を使用できます。この関数は、レイヤーの位置とサイズを定義するleft、top、width、heightパラメータを取ります。新しいレイヤーを作成し、その境界を設定し、指定した色で塗りつぶします。

カラーフィルレイヤーを作成するには、FillLayer.create_instanceメソッドをFillType.COLORパラメータと共に使用できます。フィルレイヤーを作成した後、fill_settingsプロパティを使用してその塗りつぶし設定にアクセスし、ColorFillSettingsクラスのcolorプロパティを使用して色を設定できます。提供されたコードでは、色はColor.coralに設定されています。フィルレイヤーのclippingプロパティは1に設定されており、レイヤーをクリッピングマスクとして機能させます。

グラデーションフィルレイヤーを作成するには、FillLayer.create_instanceメソッドをFillType.GRADIENTパラメータと共に使用できます。カラーフィルレイヤーと同様に、fill_settingsプロパティにアクセスしてグラデーションカラーポイントと透明度ポイントを設定できます。提供されたコードでは、グラデーションカラーポイントはGradientColorPointクラスを使用して定義し、透明度ポイントはGradientTransparencyPointクラスを使用して定義します。フィルレイヤーのclippingプロパティも1に設定されています。

パターンフィルレイヤーを作成するには、FillLayer.create_instanceメソッドをFillType.PATTERNパラメータと共に使用できます。再度、fill_settingsプロパティにアクセスしてパターンデータやその他のプロパティを設定できます。提供されたコードでは、パターンデータはPatternFillSettingsクラスを使用して定義され、clippingプロパティは1に設定されています。

フィルレイヤーを作成した後、add_layerメソッドを使用してそれらをPSDイメージに追加できます。また、各フィルレイヤーに表示名やその他のプロパティを指定することもできます。

最後に、提供されたコードを使用して、PSDイメージとそれに対応するPNGイメージを保存できます。PNGオプションは、透明性のためにアルファ付きのトゥルーカラーを使用するように設定されています。

詳細な例をご確認ください。

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)