PyQt5メモ

簡易ペイントアプリを作る①

mmToolで作ったビットマップ画像をInkscapeに渡す作業をなるべくラクに進めたい。下記の一連の作業で悩んでいるのが画像修正で使うペイントアプリです。

こんな流れ


import os, subprocess, shlex

srcImg0 = '~/デスクトップ/trace0.bmp'
bakImg  = '~/デスクトップ/whiteBak.bmp'
srcImg1 = '~/デスクトップ/trace1.bmp'
outSvg1 = '~/デスクトップ/trace1.svg'
outSvg2 = '~/デスクトップ/trace2.svg'

# ImageMagickでブラウザの特定の領域をキャプチャ
# -crop WxH+X+Y
cmd = 'import -window root -crop 715x1200+1928+145 ' + srcImg0
subprocess.call(shlex.split(cmd))

# 作業用白い台紙(715x1275)と合成
cmd = 'composite -gravity center -compose over ' + srcImg0 + ' ' + bakImg + ' ' + srcImg1
subprocess.call(shlex.split(cmd))

# 下描き準備(色変更、ダマ対策)
cmd = 'magick ' + srcImg1 + ' -fill cyan -opaque black ' + srcImg1
subprocess.call(shlex.split(cmd))

# mtpaintで編集
cmd = 'mtpaint '  + srcImg1
subprocess.call(shlex.split(cmd))

# potraceでトレース(フィル)
cmd = 'potrace --svg --output ' + outSvg1 + " " + srcImg1
subprocess.call(shlex.split(cmd))

# autotraceでトレース(中心線)
cmd = 'autotrace -centerline -output-format svg -output-file ' + outSvg2 + ' ' + srcImg1
subprocess.call(shlex.split(cmd))

それぞれの絵はこんな感じ。

mmToolの画像

黒を水色に変えmtPaintで編集:水色が従来の鉛筆部分、黒でペン入れ

2種類のトレースSVG:ここからInkscapeで作り込む

何が不便かというと

途中でビットマップ画像に必要な変更を施しますが、今のところmtPaintというアプリを使っています。このソフトは軽くて単体で使う分にはそんなに不満はないです。

でもこの後にまだInkscapeでの作画が続きます。するとmtPaintとInkscapeで操作の違いが気になってきます。具体的にはズームとパンの時のマウス、キー入力の違いです。

私はInkscapeに慣れているので、「ズームの時はマウスホィールの上下、パンの時はマウス中ボタンを押したままドラッグ」というやり方が身についています。これだとBlenderの時もそんなに違和感がありません。(Blenderはズームはマウスホィール、パンの時はShit+中ボタンドラッグ)

それでペイントソフトでも同じ操作ができるものを探したのですが、これがまぁ、ありそうで意外にない。ようやくmtPaintにたどり着いたのだけど、これも完全に満足とは言えない。パンが独特でどうにも馴染めない。

そういうわけで「ちゃっとさん」(Chat−GPTをこう呼んでいる)に相談したら、「PyQt5で作れますよ」とのことだったので、手頃なソフトがなければ自分で作っちゃえ!という気持ちになりました。

次回以降、forTrace.pyをだんだん作っていく過程を書きます。

Python  Qt5 

関連記事