私は一往メール添付 QSL も受け入れている。
GIMP 拡げてデータ・インプットすればソレで済む話だが、
ここんとこちょっと溜めてしまった。
そこで「コマンドで画像に文字入れ」で検索すると、
ImageMagick の convert でできるという。
convert QSLImage.jpg -family 'Monaco-Bold' -style Italic -pointsize 36 -fill Black -annotate +400+497 'CALLSIGN' -style Any -family Monaco -pointsize 24 -fill Black -annotate +140+525 'DATE' -style Any -family Monaco -pointsize 24 -fill Black -annotate +470+525 'TIME' -style Any -family Monaco -pointsize 24 -fill Black -annotate +750+525 'MODE' -style Any -family Monaco -pointsize 24 -fill Black -annotate +140+558 'FREQ' -style Any -family Monaco -pointsize 24 -fill Black -annotate +485+558 'RST' -style Any -family Monaco -pointsize 24 -fill Blue -annotate +45+600 'Rmks' output.jpg
ってな感じだ。
しかし溜めてしまったことで「スクリプトでできないか」と考えた。
Python もこないだやったので、どのように使うかだけ理解した。
ChatGPT に相談した。
一発目の回答、何も表示されない。
何度かのやり取りで AI が「勝手に」出力項目数や出力位置を変更して、トンデモナイ位置に出力しているのに気づいた。人間相手ならケンカ売ってたろう・・・
七箇所もあるのに二個しか出力されていない。こっちは七つもインプットしてるのに。
elif で追加すればいいことを確認して、終了した。勉強にはなったが。
import subprocess
def main():
items = {}
item_order = ['call', 'date', 'time', 'mode', 'freq', 'rst', 'rmks']
for item_name in item_order:
item_text = input("Enter {}: ".format(item_name))
items[item_name] = item_text
output_file = input("Enter the output file name: ")
cmd = ['convert', 'QSLImage.jpg']
for item_name, item_text in items.items():
if item_name == 'call':
cmd.extend(['-family', 'Monaco-Bold', '-style', 'Italic', '-pointsize', '28', '-weight', 'Bold', '-fill', 'Black', '-annotate',
'+400+497', item_text])
elif item_name == 'date':
cmd.extend(['-family', 'Monaco', '-weight', 'Normal', '-pointsize', '24', '-fill', 'Black', '-annotate',
'+140+525', item_text])
elif item_name == 'time':
cmd.extend(['-family', 'Monaco', '-weight', 'Normal', '-pointsize', '24', '-fill', 'Black', '-annotate',
'+470+525', item_text])
elif item_name == 'mode':
cmd.extend(['-family', 'Monaco', '-weight', 'Normal', '-pointsize', '24', '-fill', 'Black', '-annotate',
'+750+525',item_text])
elif item_name == 'freq':
cmd.extend(['-family', 'Monaco', '-weight', 'Normal', '-pointsize', '24', '-fill', 'Black', '-annotate',
'+140+558',item_text])
elif item_name == 'rst':
cmd.extend(['-family', 'Monaco', '-weight', 'Normal', '-pointsize', '24', '-fill', 'Black', '-annotate',
'+485+558',item_text])
else:
cmd.extend(['-family', 'Monaco', '-weight', 'Normal', '-pointsize', '24', '-fill', 'Blue', '-annotate',
'+45+600', item_text])
cmd.append(output_file)
try:
subprocess.run(cmd, check=True)
print("Conversion completed successfully. Output file:", output_file)
except subprocess.CalledProcessError as e:
print("Error occurred while running convert command:")
print(e)
if __name__ == "__main__":
main()