2022/06/27(月) [n年前の日記]
#1 [python][cg_tools] ディザリング処理をするプログラムをPythonに移植中その2
任意のパレットを指定してディザリングをかけるサンプルプログラム群を ―― C++ で書かれてるソレを Python で書き直しているところ。
_Arbitrary-palette positional dithering algorithm
アルゴリズム1を移植(?)中。tri-tone まで対応したけど、どうにも処理が遅い。8x8 のディザで処理をしているけれど、これって 4x4 ぐらいでも十分なのではないかという気がしてきたので、2x2、4x4 を選べるような仕様に改造中。
コマンドラインオプションで処理を変えるようにしたいので、argparse を使ってみた。
ただ、help文字列の記述の仕方が分からない。一般的にはどういう感じのテキストを書くのだろう。どこかにそのあたりの解説記事が無いものか…。
_Arbitrary-palette positional dithering algorithm
アルゴリズム1を移植(?)中。tri-tone まで対応したけど、どうにも処理が遅い。8x8 のディザで処理をしているけれど、これって 4x4 ぐらいでも十分なのではないかという気がしてきたので、2x2、4x4 を選べるような仕様に改造中。
コマンドラインオプションで処理を変えるようにしたいので、argparse を使ってみた。
def main():
parser = argparse.ArgumentParser(description="Yliluoma ordered dithering 1")
parser.add_argument("-i", "--input", required=True, help="Input png filename")
parser.add_argument("-o", "--output", required=True, help="Output png filename")
parser.add_argument("-m", "--mode", type=int, default=3, help="job kind 0-4. default: 3")
parser.add_argument("-d", "--dither", type=int, default=8,
help="Dither type 2,4,8 (2x2,4x4,8x8). default: 8")
args = parser.parse_args()
if args.mode < 0 or args.mode > 4:
print("Error: Unknown mode = %d" % args.mode)
sys.exit()
if args.dither != 2 and args.dither != 4 and args.dither != 8:
print("Error: Unknown dither = %d" % args.dither)
sys.exit()
srcim = Image.open(args.input)
im = convert_dither(srcim, args.mode, args.dither)
im.save(args.output)
ただ、help文字列の記述の仕方が分からない。一般的にはどういう感じのテキストを書くのだろう。どこかにそのあたりの解説記事が無いものか…。
[ ツッコむ ]
以上、1 日分です。