Skip to main content

A robust, Pillow-based alternative to fastlane frameit for composing premium mobile marketing screenshots.

Project description

screenshot-framer

A robust, Python-based CLI tool to composite premium marketing screenshots for iOS and Android applications.

screenshot-framer was built as a lightweight, flexible alternative to fastlane frameit. It bypasses the common system-level ImageMagick/FreeType font rendering failures by relying entirely on Python's self-contained Pillow library for image composition, device rounding, drop shadows, and responsive text overlay.

Features

  • No ImageMagick Required: Pure Python image manipulation using Pillow.
  • Dynamic Text Scaling: Automatically scales down long titles so they never clip off the edge of your marketing canvas.
  • Modern Device Styling: Instead of forcing clunky hardware bezels onto your UI, it elegantly rounds the corners of your raw screenshots and applies a premium Gaussian drop-shadow, floating it over your chosen background.
  • Fastlane Compatible: Can parse your existing title.strings and keyword.strings files directly.

Installation

pip install screenshot-framer

Usage

Create a configuration JSON file (e.g. framer_config.json) in your project:

{
  "base_dir": "./fastlane/metadata/android/en-US",
  "background": "./fastlane/metadata/android/en-US/background.png",
  "title_font": "/System/Library/Fonts/SFCompact.ttf",
  "keyword_font": "/System/Library/Fonts/SFCompact.ttf",
  "title_color": "#ffffff",
  "keyword_color": "#c8c8c8",
  "device_radius_phone": 80,
  "device_radius_tablet": 60,
  "shadow_radius": 50,
  "shadow_opacity": 150,
  "fallback_title": "Upnext",
  "default_disclaimer": "TV SHOW METADATA PROVIDED BY TVMAZE.COM"
}

Then run the tool from your terminal:

screenshot-framer --config framer_config.json

How It Works

  1. Discovery: The script scans the base_dir/images/phoneScreenshots and tenInchScreenshots directories.
  2. Matching: It maps your raw screenshots to the translated strings in title.strings.
  3. Compositing: It scales your background, frames your screenshot with rounded corners, adds a premium drop shadow, and responsively fits your Title and Keyword text.
  4. Export: It outputs _framed.png files ready for the App Store and Google Play.

Automating PyPI Deployment via GitHub Actions

This library uses GitHub Actions for CI/CD. To deploy updates automatically:

  1. Make sure you have created an account on PyPI.org.
  2. Set up Trusted Publishers on PyPI for your GitHub repository (this means you don't need any passwords/secrets).
  3. Push a new GitHub Release (e.g., v0.1.1), and the .github/workflows/publish.yml action will automatically build and publish the wheel to PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

screenshot_framer-0.1.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

screenshot_framer-0.1.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file screenshot_framer-0.1.0.tar.gz.

File metadata

  • Download URL: screenshot_framer-0.1.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for screenshot_framer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 760ba7954ab19d2753eee36e040b903464f7d7b718ca9cd44518f13c7e9ba8c6
MD5 8fd44ad1015987c12fa89f4cf574c2ac
BLAKE2b-256 97fd35983f25b75dda5d4845242bc7068d0907127d4ab810e54bd97eb3498426

See more details on using hashes here.

Provenance

The following attestation bundles were made for screenshot_framer-0.1.0.tar.gz:

Publisher: publish.yml on akitikkx/screenshot-framer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file screenshot_framer-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for screenshot_framer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4fb15c40910a995694d160e70449facbc35c6a1dad8ec4f1efc0cf6c6c825841
MD5 a24b7454d9c3d24f20a0bffdef50a907
BLAKE2b-256 0c021422d2588c2d3d2280d0ece0ea41d9a33df1b04b79606b634b742f4239c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for screenshot_framer-0.1.0-py3-none-any.whl:

Publisher: publish.yml on akitikkx/screenshot-framer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page