Pythonを使用したPSDフィルレイヤーの更新
概要
通常のレイヤーを作成するには、コードで提供される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) |