macOS App Icon
Generates a 1024x1024 macOS app icon PNG (rounded-square mask, transparent corners) from a source photo.
macOS App Icon
Pick a source photo, crop it to a square, optionally pick a finish style, and export a real 1024x1024 macOS app icon PNG with the standard rounded-square ("squircle") mask - corners genuinely transparent. The PDF export shows the same rounded-square shape too (background color painted over the corners) - not real transparency (impossible for a PDF page), but visually correct on paper/in a viewer.
What's included
- A source-photo field with crop enabled, forced to a 1:1 aspect ratio and at least 1024x1024
- An Icon Style dropdown - None, Smooth Bevel, Flat Glass, or Drop - a light translucent finish painted over the photo
- An exact 1024x1024 PNG export resolution, independent of the global DPI setting
- A rounded-square mask applied to both output formats - genuinely transparent corners in the PNG, a painted approximation in the PDF
Examples for Authors
- Image field crop - the source photo field has
crop/crop_aspect_ratio/crop_min_width_px/crop_min_height_pxset inform.json, so picking a photo pops up a crop modal forcing a square, at-least-1024px selection. Picking a smaller image is rejected outright with an explicit "this image is too small" message rather than silently cropping below that floor. - Conditional style overlay blocks -
overlay.jsonhas one image block per Icon Style option (smoothbevel.png/flatglass.png/drop.png, each a mostly-transparent finish texture), each gated by a plaincondition(e.g."icon_style == 'Smooth Bevel'") matching the dropdown's own value - noprocess.jsscripting needed, the existing condition mechanism already used elsewhere (e.g. hiding a placeholder MPG value) does all the work. "None" simply matches none of the three conditions. - Exact PNG export resolution -
process.jssetsinputs.output_width/inputs.output_heightto 1024, overriding the global DPI setting so the exported PNG is always exactly 1024x1024 regardless of this project's own (arbitrary) physical page size. setPageMask-process.jscallssetPageMask(1, "assets:AppIconTemplate.png"). That template's own real alpha channel (a baked-in rounded-square mask, corners transparent) is used two ways: multiplied directly into the PNG export's own alpha (real transparency), and painted (inverted, as an opaque background-color overlay) onto the PDF page's own content, so both output formats show the same masked shape - applied AFTER the style overlay, so a style's own edges get masked cleanly too.
Save as PNG for a file with genuinely transparent corners (what a real app icon needs); the PDF export shows the same shape but painted, not transparent.
Customizing
Replace AppIconTemplate.png with a different rounded-rect (or any other shape) alpha-mask template to change the corner treatment. Add a new Icon Style by dropping in another mostly-transparent overlay PNG, adding it as a dropdown option in form.json, and adding a matching conditional image block in overlay.json.