Skip to content

Investigamer/Proxyshop

Repository files navigation

Showcase Image Proxyshop is a Photoshop automation app that generates high-quality Magic the Gathering card renders. Inspired by Chilli-Axe's original Photoshop automation scripts. If you need help with this app or wish to troubleshoot an issue, please join our discord!

Photoshop Python Discord GitHub commit activity (branch) Patreon GitHub

πŸ› οΈ Requirements

  • Photoshop (2017-2024 Supported)
  • Windows (currently incompatible with Mac/Linux)
  • The Photoshop templates (Can be downloaded in the app)
  • Required fonts (included in fonts/):
    • Beleren Proxy Bold β€” For Card Name, Typeline, Power/Toughness
    • Proxyglyph β€” For mana symbols, a fork of Chilli's NDPMTG font
    • Plantin MT Pro β€” For rules text, install all variants included
    • Beleren Smallcaps β€” For Artist credit line and miscellaneous
    • Gotham Medium β€” For collector text
  • Optional (but recommended) fonts:
    • Magic The Gathering β€” Required by Classic template
    • Matrix Bold β€” Required by Colorshifted template
    • Mana β€” For various additional card symbols

πŸš€ Setup Guide

  1. Download the latest release, extract it to a folder of your choice.
  2. Install the fonts included in the fonts/ folder, please note that Proxyglyph may need to be updated in future releases.
  3. Place card arts for cards you wish to render in the art/ folder. These arts should be named according to the card (see Art File Naming for more info).
  4. Launch Proxyshop.exe. Click the Update button. Proxyshop will load templates available to download, grab what you want.
  5. Hit Render All to render every card art in the art/ folder. Hit Render Target to render one or more specific card arts.
  6. You can also drag art images or folders containing art images onto the Proxyshop app, Proxyshop will automatically start rendering those cards.
  7. During the render process the console at the bottom will display the current progress and prompt you if any failures occur.

🎨 Art File Naming

  • Art file types currently supported are: jpg, jpeg, jpf, png, tif, and webp. NOTE: webp requires Photoshop 2022+.
  • Art files should be named after real Magic the Gathering cards and should be named as accurately as possible, e.g. Damnation.jpg.
  • Proxyshop supports several optional tags when naming your art files, to give you more control over how the card is rendered!
    • Set [SET] β€” Forces Photoshop to render a version of that card from a specific MTG expansion matching the given set code. This tag is not case sensitive, so both "set" and "SET" will work.
    Damnation [TSR].jpg
    
    • Collector Number {num} β€” Only works if Set tag was also provided, render a version of that card with the exact set code and number combination. This is particularly useful in cases where a set has multiple versions of the same card, for example Secret Lair (SLD) has 3 different versions of Brainstorm.
    Brainstorm [SLD] {175}.jpg
    
    • Artist Name (Artist Name) β€” When filling in the artist name, Proxyshop will override the name present in the Scryfall data with the name you provide. This change is purely cosmetic and does not affect how the card is fetched, nor does it conflict with other tags.
    Brainstorm [SLD] {175} (Rusty Shackleford).jpg
    
    • Creator Name $Creator Name β€” This tag is not widely supported by Proxyshop's default templates. This tag allows you to insert your preferred name as a user/designer/creator, and if the template supports the creator name feature this text will be placed on a specified text layer. Can be used as a kind of signature for your work. NOTE: This tag MUST be placed at the VERY END of the art file name.
    Brainstorm [SLD] {175}$My Creator Name.jpg
    

πŸ’» Using the Proxyshop GUI

Render Cards Tab

  • The main tab for rendering authentic Magic the Gathering cards.
  • Render All: Renders a card image using each art image found in the art/ folder.
  • Render Target: Opens file select in Photoshop, renders a card image using each art image you select.
  • Global Settings: Opens a settings panel used to change app-wide options for:
    • Main settings: Affects template behavior, can be modified for individual templates. When you click the βš™οΈ icon next to a template, a config file is generated for that template which overrides these settings.
    • System settings: Affects the entire application and cannot be changed for individual templates.
  • The set of tabs below these buttons represent template types, e.g. Normal, MDFC, Transform, etc.
    • Template types represent different kinds of templates which require different frame elements or different rendering techniques.
    • If the Normal tab is active, and you click on a template button, that template becomes selected for the Normal template type. Cards which match the Normal type will now render using that template.
    • That template DOES NOT become selected for other types. For example, if Borderless is selected in the Normal tab, but Normal is selected in the MDFC tab. Cards that match the MDFC type will render using Normal MDFC.
  • Next to each template in the template list there are two icons:
    • βš™οΈ Lets you change the Main Settings for this template, some templates will also have their own specially designed settings you can change as well.
    • 🧹 Deletes the separate config file generated for this template, effectively returning this template back to default settings. Ensures Main Settings for this template are governed by the Global Settings panel.
  • The dark grey area below the templates selector is the Console, this is where status messages will be displayed tracking render progress and other user actions.
  • To the right of the Console are some useful buttons:
    • πŸ“Œ Pins the Proxyshop window, so it remains above all other running programs
    • πŸ“· Takes a screenshot of the Proxyshop window, saves to: out/screenshots/
    • 🌍 Opens your default web browser, navigating to Proxyshop's GitHub page
    • ❔ Opens your default web browser, navigating to our community Discord server
    • Continue: Becomes active when app is waiting for a user response, either when manual editing is enabled or an error has occurred.
    • Cancel: Becomes active when cards are being rendered, can cancel the render operation at any time or if an error occurs.
    • Update: Opens the Updater panel which allows you to download new templates and update existing ones.

Custom Creator Tab

  • This tab controls the custom card creator.
  • This feature is currently considered experimental beta and may have issues.
  • You can currently render Normal, Planeswalker, or Saga cards, just fill in the appropriate data and hit Render Custom.
  • More features and card types will be added in the near future.

Tools Tab

  • This tab contains a growing list of helpful tools and utilities.
  • Render All Showcases: Generates a bordered showcase image for each card image in the out/ folder, showcases will be placed in out/showcase/.
  • Render Target Showcase: Opens a file select in Photoshop, generates a bordered showcase image for each card image you select.
  • Compress Renders: This tool reduces the size of card images stored in the out/ folder. The settings are:
    • Quality: JPEG save quality of the compressed image, supports a number between 1 and 100. (Recommended: 95-99)
    • Optimize: Enables Pillow's automatic "optimize" flag. Lowers filesize by a small margin for no discernible downside. (Recommended: On)
    • 800 DPI: Downscales card images above 800 DPI to a maximum of 800 DPI. Most Proxyshop templates are 1200 DPI which is much higher than anyone really needs. Most printing services do not print above 800 DPI. (Recommended: On)

🐍 Setup Guide (Python Environment)

Setting up the Python environment for Proxyshop is intended for advanced users, contributors, and anyone who wants to get their hands dirty making a plugin or custom template for the app!

  1. Install Poetry using one of these methods.
    # Install pipx, then install poetry with pipx (Recommended)
    python -m pip install --user pipx
    python -m pipx ensurepath
    pipx install poetry
    
    # Install using Powershell
    (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
    
    # Install using WSL (Windows Subsystem for Linux)
    curl -sSL https://install.python-poetry.org | python3 -
    
    # Install using scoop
    scoop install poetry
  2. Clone Proxyshop somewhere on your system, we'll call this repository the root directory.
    git clone https://github.com/MrTeferi/Proxyshop.git
  3. Navigate to the root directory and install the Proxyshop project with poetry.
    # Move to the Proxyshop repository we just cloned
    cd Proxyshop
    
    # OPTIONAL: Configure poetry to setup the environment locally
    poetry config virtualenvs.in-project true
    
    # Install the Proxyshop project
    poetry install
  4. Install the fonts included in the fonts/ folder. Do not delete these, even after you install them (some are used by the GUI).
  5. Create a folder called art in the root directory. This is where you place art images for cards you wish to render.
  6. Run the app.
    # OPTION 1) Execute via poetry
    poetry run main.py
    
    # OPTION 2) Enter the poetry environment, then execute normally
    poetry shell
    py main.py
  7. Refer to the usage guide for navigating the GUI.

πŸ’Ύ Download Templates Manually

If you wish to download the templates manually, visit this link:

  • Right-click the Zipped folder and hit Download.
  • This will download all Proxyshop templates, Google Drive may split this download into multiple zip files.
  • Once the zips are downloaded, move them into the templates/ folder. Select them all, Right-click -> 7-Zip -> Extract here.
  • Once extracted, you will have a lot of .7z archive files, this is because we compress PSD templates to reduce their hosting footprint.
  • Once again, select the .7z archives, and extract using the same process.
  • You will also notice two folders: MrTeferi/ and SilvanMTG/
  • Copy the contents of these folders to: plugins/MrTeferi/templates/ and plugins/SilvanMTG/templates/
  • Once again, extract those .7z archives using the same process as before. All done!

πŸ’Œ How can I support Proxyshop?

Feel free to join our discord and participate in the #Proxyshop channel where we are constantly brainstorming and testing new features, dropping beta releases, and sharing new plugins and templates. Also, please consider supporting our Patreon which pays for S3 + Cloudfront hosting of Proxyshop templates and allows us the freedom to work on the app, as well as other applications like MPC Autofill, MTG Art Downloader, and more! If Patreon isn't your thing, you can also buy me a coffee via Paypal. Thanks so much to our awesome supporters!

❓ FAQ

How do I change the set symbol to something else?

In settings, change "Default Symbol" to the set code of the symbol you want, and enable "Force Default Symbol". If you wish to add a totally custom symbol, here's the process:

  • Head over to src/img/symbols/ and create a folder named according a new custom code.
  • Add your custom SVG symbols to the folder you created, name each file according to the first letter of its rarity (capitalized).
  • Set that symbol as "Default Symbol" and enabled "Force Default Symbol". You're good to go!
How do I completely hide the set symbol?

In Global Settings, or settings for a specific template, change "Symbol Render Mode" to None. This disables the expansion symbol altogether.

How do I hide a layer in a Proxyshop template, so it doesn't appear in rendered cards?

In the Photoshop template of your choice, change the opacity to 0 on the layer you wish to hide. You can use this method to hide anything. This is safer than just disabling the layer's visibility because layers may be forcibly enabled and disabled by the app, it's also safer than deleting the layer because that may cause errors on some templates.

Where is a good place to find high quality MTG art?

Your best resource is going to be MTG Pics, to improve art quality even more you can look into upscaling with Topaz/Chainner/ESRGAN. On our discord we provide a lot of resources for learning how to upscale art easily and effectively. For mass downloading art, view my other project: MTG Art Downloader

The app stops when trying to enter text and Photoshop becomes unresponsive!

There is a known bug where Photoshop crashes when trying to enter too much text into a text box, it should be fixed but could theoretically happen on some plugin templates that don't make the text box big enough. The best way to fix this is to open the template in Photoshop and expand the bottom edge of the Rules text boxes (creature and noncreature).

Required value is missing / RPC server not responding.

This can sometimes be one of the more rare but obnoxious errors that occur on some systems. Sometimes the root cause is unknown, but it can usually be fixed. Try these options in order until something works:

  • Ensure there is only ONE installation of Photoshop on your computer. Having two versions of Photoshop installed at the same time can prevent making a connection to the app. If you have more than one installed, uninstall all versions of Photoshop and reinstall one version. You must uninstall all of them first, just removing one likely won't fix the issue.
  • Ensure that your Photoshop application was installed using an actual installer. Portable installations of Photoshop do not work with Proxyshop, since Windows needs to know where it is located.
  • Close Photoshop and Proxyshop, then run both Photoshop and Proxyshop as Administrator, try rendering something.
  • Close both of them, then hold ALT + CTRL + SHIFT while launching Photoshop, then launch Proxyshop, try again.
  • Restart your computer, then start both and try again.
  • If you have a particularly over-defensive antivirus software running that may be interfering with Proxyshop connecting to Photoshop, such as Avast, Norton, etc. close your antivirus software, relaunch both, and try again. You might also try disabling Windows Defender.
  • If there's a chance your Photoshop installation could be damaged, corrupted, or otherwise messed up in some way, it is recommended to completely uninstall Photoshop and install the latest version you have access to. Generally, Proxyshop works best with newer versions of Photoshop. If using an in-authentic version of Photoshop, verify it is of high quality and uses a real installer.
  • If all of these fail to fix the issue, please join our Discord (linked at the top) and provide the error log from logs/error.txt in your Proxyshop directory, so we can help find the cause :)
Mana Cost, Rules, or other text is huge and not scaling down?
  • In Photoshop go to Edit > Preferences > Units & Rulers.
  • Set Rulers to Pixels
  • Set Type to Points
  • The issue should be fixed.
Photoshop is busy!

This error occurs when Photoshop is not responding to commands because it is busy. To prevent this error, you must ensure Photoshop is in a neutral state when you run Proxyshop or render a card:

  • There should be no dialog boxes or settings menus open in Photoshop. The normal tool panels are fine.
  • There should be no tools performing tasks, for example having text highlighted for editing with the text tool.
  • Ideally Photoshop should be launched fresh, with no documents open.
I'm getting some other error!

In your proxyshop directory, look for a folder named logs, inside that folder you should see error.txt, check the last error log in that file. If the error isn't obvious, join our Discord and feel free to ask for help in the #Proxyshop channel.

✨ Credits

  • Our amazing Patreon supporters who literally keep this project going.
  • Chilli Axe for his outstanding MTG Photoshop Automation project that Proxyshop was inspired by, and for producing many of the base PSD templates that have been modified to work with Proxyshop.
  • Additional template and asset support from:
    • SilvanMTG
    • Nelynes
    • Trix are for Scoot
    • FeuerAmeise
    • michayggdrasil
    • Warpdandy
    • MaleMPC
    • Vittorio Masia
    • iDerp
    • TupinambΓ‘ (Pedro Neves)
  • Andrew Gioia for his various font projects which have been of use for Proxyshop in the past.
  • John Prime, Haven King, and members of CCGHQ for providing expansion symbol SVG's.
  • Hal and the other contributors over at Photoshop Python API.
  • Wizards of the Coast and all the talented artists who make Magic the Gathering a reality.
  • Countless others who have provided help and other assets to the community that made various features possible.
  • All contributors to the code base.