Last active
June 20, 2024 10:20
-
-
Save moyashi/ec8f3dc1330ad847bb78fd28e06a42ba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# THETAで撮影した画像から自分を消すスクリプト for iOS Pythonista 3 | |
import dialogs | |
import notification | |
import piexif | |
from PIL import Image | |
# 必要ライブラリ | |
# Pythonista 3ではstashのpip経由でpiexifをインストールする | |
# pillowは最初から入っているのでインストール不要 | |
# pip install piexif | |
# THETAを三脚に固定 | |
# myself_in_front_of_the_unit は自分がTHETAの前に立って撮影 | |
# myself_behind_the_unit は自分がTHETAの後ろに立って撮影 | |
# この2枚の全天球画像を使って自分を全天球画像から消す | |
# iOSではTHETAアプリから共有で(面倒だけど1枚ずつになる) | |
# ファイル.app宛に処理対象の画像を2枚書き出す。 | |
# それをこのスクリプトの実行時に指定する。 | |
# 処理済みの画像は、このスクリプトを置いたPythonista 3のフォルダにOUTPUT.JPGとして書き出される。 | |
# Googleマップへのアップロードは、Web版のGoogleマップからする。 | |
# アプリ版のGoogleマップだと、標準のアルバムからしかアップロードできないため。 | |
def main(): | |
notification.schedule('THETAの正面から撮影した写真を選択', 0) | |
file1 = dialogs.pick_document(types=['public.jpeg']) | |
myself_in_front_of_the_unit = file1 | |
notification.schedule('THETAの背面から撮影した写真を選択', 0) | |
file2 = dialogs.pick_document(types=['public.jpeg']) | |
myself_behind_the_unit = file2 | |
output = "OUTPUT.JPG" | |
notification.schedule('画像処理を開始', 0) | |
base_image = Image.open(myself_in_front_of_the_unit) | |
overlay_image = Image.open(myself_behind_the_unit) | |
height = base_image.height | |
width = base_image.width | |
left_overlay_image = overlay_image.crop((0, 0, int(width / 3), height)) | |
right_overlay_image = overlay_image.crop((int(width / 3 * 2), 0, width, height)) | |
base_image.paste(left_overlay_image) | |
base_image.paste(right_overlay_image, (int(width / 3 * 2), 0)) | |
base_image.save(output, quality=95) | |
piexif.transplant(myself_in_front_of_the_unit, output) | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment