iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
Camera Cards 소니·캐논·니콘 카메라 재생에서 촬영 가이드 확인
Pose cards with the words to say to your couple, plus your timeline, family groups and shot list, right in your camera's playback. Sony, Canon and Nikon. Make your first card free, no account needed.
미디어JavaScript · PythonGitHub @inprincipiophotography-ctrl온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기123
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Pose reference cards on the back of your camera. No phone. No fumble. No "let me check Pinterest real quick."
Design pose cards your way (Canva, Figma, Photoshop — whatever), run them through one shell script, drop the result on your SD card, and they show up in your camera's playback alongside your real photos. Scroll between shots; no phone reach.
Built for working photographers. Hardware-verified on Sony A7-series, Canon EOS R, and Nikon Z bodies; other bodies welcome — see Camera Compatibility.README 전문 보기 ↗Pose reference cards on the back of your camera. No phone. No fumble. No "let me check Pinterest real quick."
Design pose cards your way (Canva, Figma, Photoshop — whatever), run them through one shell script, drop the result on your SD card, and they show up in your camera's playback alongside your real photos. Scroll between shots; no phone reach.
Canva design ──► cardify.sh ──► DSC09000.JPG ──► SD card ──► Camera playback
(any size) (one cmd) (Sony-spec)
Built for working photographers. Hardware-verified on Sony A7-series, Canon EOS R, and Nikon Z bodies; other bodies welcome — see Camera Compatibility.
Pulling out your phone mid-shoot to check a pose has three costs: trust erosion (the bride sees you scrolling), pace breakage (20–60 s per pose lookup), and brittleness (dead phone, gloves, sun glare, no signal). Cue (shootwithcue.com) demonstrated that the obvious-in-hindsight solution is to ship the references as JPEGs the camera plays back natively. This repo is an open, scriptable equivalent: bring your own card design, get a Sony-spec JPEG out.
brew install exiftool # mandatory: EXIF/MakerNotes manipulation
pip3 install Pillow # mandatory: JPEG encoding with Sony q-tables
Why Pillow over ImageMagick: older Sony bodies (A7 III v4.01 and similar BIONZ X bodies) reject JPEGs encoded with standard libjpeg quantization tables. Pillow lets us reuse the camera template's exact tables, unlocking those bodies. ImageMagick is no longer used.
Copy scripts/cardify.sh to your Desktop (or anywhere on $PATH) and chmod +x it.
Take one ordinary photo with your Sony body and copy it off the SD card. We use it as an EXIF template — its Make/Model/MakerNotes get transplanted onto your card so the camera treats the result as a native shot. Save it as template.JPG.
./cardify.sh -p template.JPG mycard.jpg DSC09000.JPG # -p portrait
# or
./cardify.sh -l template.JPG mycard.jpg DSC09001.JPG # -l landscape
# or
./cardify.sh template.JPG mycard.jpg DSC09002.JPG # auto-detect
The output is a Sony-spec JPEG: 1920×1280 pixels, baseline DCT, YCbCr 4:2:2, EXIF Orientation set so the camera auto-rotates correctly when you turn the body, full Sony Make/Model/MakerNotes copied from the template, R98 DCF marker, embedded thumbnail.
DSC09NNN and not DSC00099?Sony cameras pick the next file number as max_existing + 1. If you place a card at DSC00099.JPG on a card that already has the photographer's shots up to DSC00050, their next shot becomes DSC00100, not 00051 — confusing. Using the high 9NNN range (e.g. DSC09000–DSC09029 for a 30-card pack) keeps the photographer's daily numbering in the 0NNN–8NNN range untouched for years of normal shooting. The cards also pin DateTimeOriginal to 2024:01:01 so Date View separates them from current shoots automatically.
Format the card in the camera once, take one normal photo (creates DCIM/100MSDCF/), then on your computer drop your DSC09000.JPG into that folder. Eject cleanly. Insert in camera. Hit playback.
Detailed walkthrough: docs/M2_HARDWARE_TEST.md.
Orientation tag — we follow the same convention.2024:01:01 12:00:00 so cards don't collide with your real shoots in Date View.See docs/CUE_EXIF_ANALYSIS.md for the reasoning, including the EXIF teardown of Cue's reference samples that informed every step.
If a card doesn't play back on a camera, run the validator on the suspect file:
./cardify.sh --validate suspect.JPG
It returns 0 if the file is spec-compliant (so the problem is camera-side — see Triage, most commonly "Recover Image Database" on the camera menu), or 1 with a list of which checks failed (so the file needs to be regenerated).
.
├── scripts/
│ ├── cardify.sh ← main tool: Canva JPEG → camera-ready JPEG
│ └── exif_diff.py ← debug: side-by-side EXIF diff vs a reference shot
├── samples/
│ └── sony-a7iv/ ← pre-built example output, downloadable from GitHub
├── docs/
│ ├── M2_HARDWARE_TEST.md ← step-by-step Sony A7 IV verification
│ ├── CAMERA_COMPATIBILITY.md ← per-vendor folder/file conventions
│ ├── CAMERA_TEST_RESULTS.md ← log of confirmed-working bodies
│ └── CUE_EXIF_ANALYSIS.md ← EXIF reverse-engineering notes
├── README.md
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
└── LICENSE
Hardware-verified on real bodies (portrait + landscape, auto-rotation correct, full playback + zoom + grid view):
| Body | Status | Template used |
|---|---|---|
| Sony A7 III (firmware v4.01) | ✓ Verified | A7 III SOOC |
| Sony A7 IV | ✓ Verified | A7 III SOOC (same file) |
| Sony A7 V | ✓ Verified | A7 III SOOC (same file) |
| Canon EOS R6 Mark II | ✓ Verified | R6 Mark II SOOC (same body) |
| Canon EOS R6 Mark III | ✓ Verified (cross-body) | R6 Mark II SOOC template played back on a different friend's R6 Mark III body |
| Nikon Z8 | ✓ Verified (cross-body) | Z6 III SOOC template |
| Nikon Z9 | ✓ Verified (cross-body) | Z6 III SOOC template (same file as Z8) |
| Other Sony Alpha (A7R V, A1, A1 II, A9 III, A7C II, A7S III, …) | Should work | Same Sony template expected to apply |
| Other Canon EOS R (R5, R5 Mark II, R6, R5 Mark III, …) | Likely works | R6 line cross-body confirmed; R5 line untested on hardware but expected to follow the same pattern |
| Other Nikon Z (Z6 III, Z6 II, Z7 II, Zf, Z5, …) | Likely works | Z8 / Z9 cross-body confirmed; rest untested on hardware but expected to follow the same pattern |
| Fujifilm / OM System | Not yet supported | Cardify vendor switch needs an additional case |
A single cardified JPEG, encoded with quantization tables from a Sony A7 III, plays back correctly on all three tested bodies (A7 III, A7 IV, A7 V) from one shared SD card with zero per-model adjustment. This is the key strategic finding from hardware testing:
This collapses what was looking like a per-model template matrix (10+ Sony SKUs) into a single Sony SKU — sourced from the oldest popular wedding-shooting body in each vendor's line.
Sony A7 IV / A7 V playback engines accept any standards-compliant baseline JPEG, so cardify worked fine on them with the old ImageMagick-based pipeline. Sony A7 III with firmware v4.01 (and likely other older Sony bodies) validates a JPEG "fingerprint" — quantization tables, Huffman tables, and APP-segment structure must match what a real Sony camera produces. ImageMagick/libjpeg output fails this check.
The current pipeline encodes via Pillow with the template body's exact quantization tables (Image.save(..., qtables=template.quantization, optimize=False)), producing output that's structurally indistinguishable from a real Sony JPEG. This unblocks A7 III playback, hardware-verified — and as the universal-compatibility finding above shows, the same output also satisfies every newer Sony body.
This is the same wall Cue.io hit when they decided not to support A7 III — and we're past it.
The universal-compatibility finding on Sony suggests this rule for adding any new vendor:
Canon status (as of 2026-05-21): Canon EOS R6 Mark II hardware-verified with its own SOOC as the template (2026-05-20). The next day a different friend's R6 Mark III played back the same R6 Mark II-templated card without modification — cross-body Canon verification, firm. The R6 line therefore collapses to one Canon template (the older R6 Mark II SOOC), same shape as the Sony A7 III template covering A7 IV / V. The R5 line remains untested but is expected to follow the same pattern.
Nikon status (as of 2026-05-31): Nikon Z8 and Z9 both hardware-verified, cross-body, from a single clean Nikon Z6 III SOOC template — a friend placed the same pack on both pro bodies and every reference played back natively. The Nikon Z line therefore collapses to one template, same shape as Sony and Canon. One Nikon wrinkle: the DCF folder name encodes the body (100NCZ_8 on a Z8, 100NCZ_9 on a Z9, 100NCZ_6 / 100NCZ_7 on the Z6 / Z7 lines) rather than being a single fixed folder, so the customer copies the pack into whichever 100NCZ_… folder their own body created. Going to production.
This confirms three SKUs (Sony / Canon / Nikon) are enough to cover the working-photographer market — one template per vendor, all three now hardware-verified cross-body.
MIT — see LICENSE.