Community画像github.com

onemanylov/phone-screen

電話の写真を再利用可能なテンプレートに変換し、画像生成機を使わずにコードで任意の画像を画面に配置します。新しい電話の写真、新しいテンプレート作成、または既存テンプレートの確認に使用します。

phone-screen とは?

このスキルは、iPhoneの実写写真から、画面部分をコードで置き換えるための精密なテンプレートを作成します。フロントガラス全体(画面、黒枠、ノッチやアイランドを含む)を自動検出し、任意の画像を違和感なく合成できます。対応プラットフォームは主にコマンドライン(Pythonスクリプト)で、傾きやアスペクト比の制限を設けて正確なテンプレート作成を保証します。テンプレート作成後は、`swap.py` を使って画像を簡単に差し替えられます。また、ビルドインされたフレームチェック機能により、黒枠の均一性をピクセル単位で検証し、品質を担保します。このスキルは画像生成AIを一切使用せず、幾何学的・光学的な解析のみに基づくため、再現性が高く、素材写真のライセンス問題も発生しません。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/onemanylov/phone-screen-swap/tree/HEAD/.claude/skills/phone-screen

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

電話画面の差し替え

写真: $ARGUMENTS。指定がない場合は、写真を依頼するか、find_photos.py で見つけてください。 電話の前面全体がコードによって置き換えられます:画面、黒枠、ノッチまたはアイランド。ガラス部分の外側の写真はそのまま保持されます。

既存のテンプレートがある場合、このスキルは不要です:python3 swap.py <画像>

新しいテンプレート

使用するもの:iPhoneの実写写真で、画面がカメラに向いているもの。対象外:Android、傾き25度以上、片辺が他方の1.2倍以上(トリミングで拒否されます)。画面に指や袖がかかっている写真は避けてください: グレーのフレームがないと、それらが上書きされてしまいます。ガラス全体が処理範囲で、映り込みも含まれます。写真の外側から入り込む肌だけが、写真からそのまま残ります。

P=<名前, 8文字, ユニーク>; D=templates/corners
mkdir -p out
# 1. 写真を見て、画面のおおよその四隅 (TL,TR,BR,BL) を読み取る
python3 tools/slide_crop.py --q '<四隅>' <photo.jpg> templates/crop/$P.jpg       # トリミング後の画像に四隅を表示
# 2. 正確な直線のエッジ。`live` が低い場合: R=34
python3 tools/slide_lines.py $P '<トリミング画像上の四隅>' out/l.jpg                    # 出力の最後に補正された四隅が表示される
# 3. 輪郭:透視変換、レンズの歪み、角の丸み、ガラスの輪郭
python3 tools/slide_trace.py $P '<四隅>' out/t.jpg $D/$P.json
# 4. フィッティングで見落とした部分の確認。必ず画像を見ること
python3 tools/slide_proof.py $P $D/$P.json out/$P-proof.jpg
# 5. ポーズ。反射にのみ使用
python3 tools/slide_sheet.py $P $D/$P.pose.json init
# 6. ノッチまたはアイランド、ステータスアイコン、黒部分の計測
python3 tools/slide_check.py $P measure
# レシピ $D/$P.recipe.json:a841f108(ノッチ)または f5dad639(アイランド)をコピーし、frame=$P、pose、corners および計測されたオプションを設定
# 7. 時刻とアイコンをこの電話の位置に合わせる
python3 tools/slide_status.py $P init <measure からの出力行>; python3 tools/slide_status.py $P build
# 8. ビルドと赤テスト
python3 tools/slide_check.py $P build
# 9. 漏れのサーマルマップ
python3 tools/slide_check.py $P leak
# 10. フレーム幅
python3 tools/slide_check.py $P frame

この後、テンプレートとして使用可能:python3 swap.py <画像> -t $P

確認してから信頼する

  1. out/$P-split.jpg: 写真、赤、結果。赤がフィットし、フレームがケースで終わり、本体から内側はすべて処理範囲。
  2. out/$P-leak.jpg: 黒画面にフレームを重ねたもの、輝度は対数スケール。光っている部分は写真由来:カットアウト周辺の線、点、映り込み。スピーカーと実際に前面にあるものだけが表示される。
  3. out/$P-top.jpg: カットアウトの緑色の輪郭を写真に重ねたもの、アイコンの配置。
  4. out/$P-zoom.jpg: 四隅とフレームを拡大し、写真と並べて表示。
  5. 白い画像を使ったテンプレートを swap.py で表示:暗いページは不良な四隅やエッジを隠すため。
  6. out/$P-frame.jpg: 白い画面上の四隅。以下のフレームチェックに合格するまでテンプレートは完成ではありません。

フレームチェック

黒枠はハードウェアであり、全周同じ幅です。slide_check.py $P frame は白い画面でビルドし、画像を水平に補正して各辺の中央部の黒を計測します(591ピクセル幅)。各辺の ours と photo、その差、判定結果を表示します:最大4ピクセルまで OK、それ以上は FIX。 4ピクセルの制限は以下の電話から決定されました:7.5ピクセルの差は明らかに見え、4ピクセルでは見えませんでした。 新しいテンプレートで FIX と表示された場合:

  1. slide_trace.py を再実行します:表示されている黒を読み取り、各辺に中央値(frame: 行)を適用します。
  2. 再ビルドし、その後 frame を再度実行します。
  3. それでも FIX の場合:ours と photo を比較します。一致する場合、映り込み、ケース、または手が写真上でその辺のフレームを隠しています。一致しない場合、輪郭がずれています:-frame.jpg と -split.jpg を確認します。
  4. 収束しない場合、テンプレートを完成と見なさないでください。どの辺が何ピクセルずれているかを報告します。 目視でも -frame.jpg を確認してください:上部と側面が一致するはずです。 出荷されたテンプレート:f38fe44a 2.2、79186658 3.2、895d3ee8 3.8 は合格。f5dad639 5.8、a841f108 6.2、14278a0b 8.5 は不合格:これらのフレームは最初にビルドされたまま維持されています。

設定

  • 黒: floor。フレームとカットアウトが写真に合うように設定。.003 から始め、写真が暗い場合は下げる。build が両方を表示。
  • ノッチ: measure からの値。緑の輪郭で cr を調整。measure は低めに読み取る。
  • ノッチ上のスピーカー: grille=45。ノッチ周辺に古いページの細い線が表示される場合:gband=1。
  • アイランド: その中心はハードウェア固定で、591 のうち 295.5。measure が 1 ピクセル以上のずれを示す場合、明るい部分がエッジを侵食している:クリーンなエッジを取り、中心を通して鏡像にします。ロック画面では、アイランド搭載電話から x(時刻 111、アイコン 479)を、y を measure から取得します。
  • アイランド上のスピーカー: ガラスの輪郭内にある場合、grille=45 でその浮き彫りのみ復元。
  • ガラス上の袖: sleeve=1。templates/grey/(f38fe44a)に実際のグレーフレームがある場合のみ有効。
  • 暗い部分が重なる場合: slide_trace.py は720ポイントのうち立ち上がりが400未満の場合、自動的に切り替えます。-split は特に注意して確認すること。

仕組み

電話は剛体であるため、画面はiOSの連続的な角丸を持つ長方形であり、透視変換と1つの放射状レンズ歪みを通して見られます。エッジは対数輝度で検出されるため、暗い部分の重なりでも機能し、線形光の中間点に配置されます。画像は補正された写真上に描画され、その後ガラスとともに元に戻されます。

既知の落とし穴

  • 暗いページだけで判断すること。
  • ある方法でフィッティングし、別の方法で確認すること:確認がフィッティングであり、証明は除外されたものです。
  • 写真上に直接直線を引くこと:写真は歪んでいます。直線は補正後の画像上にのみ存在します。
  • 明るい画面で外側からケースのエッジを探すこと:布の折り目がケースのように見えます。画面から外側に向かって探索します。

関連スキル