9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

シーエー・アドバンス Advent Calendar 2022Advent Calendar 2022

Day 11

pytoshopのPSDファイルの新規作成でレイヤーを再構成してみた

Posted at

はじめに

広告バナー作成において、社内アプリに登録する際にレイヤーの分割作業が発生しています。
この作業が地味に時間がかかるとクリエイターさんから意見を頂いていました。
この作業をpytoshopというpythonライブラリを使用してPSDの新規作成ができるか試してみました。

やりたいこと

例として、以下のようなロゴ、背景色と連番構成の画像レイヤーを ロゴ-連番-背景色の構成でPSDを新規作成したい

├── ロゴ
├── 1
├── 2
├── 3
├── 4
└── 背景色
├── ロゴ
├── 1
└── 背景色

PSDファイルを操作するライブラリで有名どころは psd-toolsがありますが、pytoshopはPSDの新規作成が行えるため、
既存のPSDファイルからレイヤーを取得して新規ファイルとして再構成する方法で試してみました。

ライブラリインストール

pip install pytoshop

やってみた

layer_separate.py
import os
import sys
import pytoshop
from pytoshop import layers
from pytoshop.user import nested_layers


def main():
    read_file_path = 'sample_1.psd'

    with open(read_file_path, 'rb') as fd:
        # ヘッダ情報を読み込む
        psd_header = pytoshop.core.Header.header_read(fd)
        print(vars(psd_header))
        fd.seek(0)
        psd = pytoshop.read(fd)
        current_layer_list = nested_layers.psd_to_nested_layers(psd)
        new_layer = nested_layers.nested_layers_to_psd(
            [current_layer_list[0], current_layer_list[1], current_layer_list[2]],
            color_mode=psd_header.color_mode,
            version=psd_header.version,
            compression=1, 
            depth=8, 
            size=(psd_header.height, psd_header.width), 
            vector_mask=False
        )
        with open('newfile.psd', 'wb') as new_fd:
            new_layer.write(new_fd)

if __name__=="__main__":
    main()

結果

スクリーンショット 2022-12-26 13.21.13.png

上記リファレンスを参照しながら作成してみました。
既存のPSDからレイヤーを取得して、新規ファイルに書き出しまでは行えましたが、
フィルターやフォントの色などが元レイヤーと違っていました。

今回レイヤー取得から新規作成までは行えたので、第1段階はクリアしたかなーと思っています。
のこライブラリの理解度が足りてないところやリファレンスに載っていないようなメソッドもありそうだったので、
もうちょっと試行錯誤してみます。

参考

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?