Photoshop Curveファイルを html+JavaScriptでGIMP用に変換するのは、
以前のエントリ
https://momospin.blogspot.com/2021/06/photoshop-curvehtmljavascriptgimp.html
で記事にしました。
今回は、同じことをPythonを使ってやります。
acvファイルのフォーマットは以下のURLを参照
https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/
このPythonソースは、GitHubのPhotosop ACVリーダー
https://gist.github.com/fish2000/5641c3697fa4407fcfd59099575d6938
を元に作成しました。
下のコードをUTF-8のPythonソースファイルに保存してください。
#!/usr/bin/env python
"""
DESCRIPTION:
PhotoshopのACVファイルをGIMPのトーンカーブに変換する
Usage:
python acvfile_converter.py acvファイルpath 出力ファイルpath
ORIGINAL CODE AUTHOR:
fish2000
https://gist.github.com/fish2000/5641c3697fa4407fcfd59099575d6938
"""
import sys, os, traceback
from struct import unpack
# カーブ1つぶんのデータを読み取る
def read_curve(acv_file):
curve = []
# カーブ内のポイント数
number_of_points_in_curve, = unpack("!h", acv_file.read(2))
for j in range(number_of_points_in_curve):
y, x = unpack("!hh", acv_file.read(4)) # ! はビッグエンディアンの意味
curve.append((x, y)) # (input, output)をリストに追加
return curve
def main():
if (len(sys.argv) != 2):
acv_file = open(sys.argv[1], "rb")
else:
print("Wrong args. Usage: python acv_converter.py acvファイルpath 出力ファイルpath")
os._exit(1)
outputFile = sys.argv[2]
# バージョンとカーブ数を読み取る
version, nr_curves = unpack("!hh", acv_file.read(4))
curves = []
for i in range(nr_curves):
# カーブ1本ぶんのポイントを読み取る
curves.append(read_curve(acv_file))
with open(outputFile,'w',newline="\n") as fo:
fo.write("# GIMP Curves File\n")
for curve in curves:
for p in curve:
fo.write(f"{p[0]} {p[1]} ")
rest = 17 - len(curve)
for i in range(rest):
fo.write("-1 -1 ")
fo.write("\n")
if __name__ == '__main__':
try:
main()
except Exception as e:
print('ERROR, UNEXPECTED EXCEPTION')
print(str(e))
traceback.print_exc()
os._exit(1)
元のコードはRGBの係数を表示する仕様になっているみたいですが、
上のコードは、GIMPのトーンカーブ用ファイルを出力するようにしました。
GIMPのトーンカーブ用ファイルを作成したら、GIMPの画面で
それを読み込んで使います。
その辺は、前のhtml+JavaScript版のエントリで書きました。
0 件のコメント:
コメントを投稿