Skip to content

App Icon Generation

imgx provides powerful tools for generating app icons for iOS, macOS, and other platforms from a single source image.

Overview

When developing applications, you need icons in various sizes for different platforms, devices, and contexts. Creating these manually is time-consuming and error-prone. imgx automates this process, generating all required icon sizes from a single high-resolution source image.

Supported Platforms

  • iOS: All icon sizes required for iPhone and iPad apps, including App Store icons
  • macOS: App icons for Mac applications, including the .icns format
  • Web: Favicon sets including various sizes and formats
  • Android: Coming soon (currently in beta)

Basic Usage

CLI

bash
# Generate all app icons (iOS and macOS) from a single image
imgx app-icon source-icon.png

# Generate only iOS app icons
imgx app-icon source-icon.png --platform ios

# Generate only macOS app icons
imgx app-icon source-icon.png --platform macos

# Specify output directory
imgx app-icon source-icon.png --output-dir ./assets/app-icons

JavaScript/TypeScript API

ts
import { createAppIcon } from '@stacksjs/imgx'

// Generate all app icons
const result = await createAppIcon('path/to/source-icon.png')

// Generate only iOS icons
const iosIcons = await createAppIcon('path/to/source-icon.png', {
  platform: 'ios',
  outputDir: './public/app-icons',
})

console.log(`Generated ${iosIcons.sizes.length} icons for ${iosIcons.platform}`)

Source Image Requirements

For best results, your source image should meet these requirements:

  • Resolution: At least 1024×1024 pixels (higher is better)
  • Format: PNG with transparency
  • Content: Place important content within the center 80% of the image (avoid corners)
  • Style: Follow platform-specific guidelines (i.e., rounded corners for iOS)
  • Color: Vibrant, distinctive and legible at small sizes

Generated Icons

iOS Icons

imgx generates all iOS app icon sizes required by Apple, including:

SizePurpose
20×20 pt @1x, @2x, @3xNotification icon
29×29 pt @1x, @2x, @3xSettings icon
40×40 pt @1x, @2x, @3xSpotlight icon
60×60 pt @2x, @3xiPhone app icon
76×76 pt @1x, @2xiPad app icon
83.5×83.5 pt @2xiPad Pro app icon
1024×1024 pxApp Store icon

The output includes a properly formatted Contents.json file for use in Xcode projects.

macOS Icons

For macOS applications, imgx generates:

SizePurpose
16×16 pt @1x, @2xMenu bar, Spotlight, Finder
32×32 pt @1x, @2xFinder, Desktop
128×128 pt @1x, @2xFinder, File Info
256×256 pt @1x, @2xFinder, File Info
512×512 pt @1x, @2xApp Store

The output includes a .icns file that can be used directly in macOS applications.

Output Structure

By default, imgx creates this directory structure:

output-dir/
├── ios/
│   ├── AppIcon.appiconset/
│   │   ├── Contents.json
│   │   ├── Icon-20@2x.png
│   │   ├── Icon-20@3x.png
│   │   ├── ... (all other iOS sizes)
│   │   └── Icon-1024.png
├── macos/
│   ├── AppIcon.appiconset/
│   │   ├── Contents.json
│   │   ├── Icon-16.png
│   │   ├── Icon-16@2x.png
│   │   ├── ... (all other macOS sizes)
│   │   └── Icon-512@2x.png
│   └── AppIcon.icns

Advanced Usage

Custom Background

For platforms that don't support transparency (like iOS App Store), you can specify a background color:

bash
imgx app-icon icon.png --background "#ffffff"
ts
await createAppIcon('icon.png', {
  background: '#ffffff', // or 'rgba(255, 255, 255, 0.5)' for semi-transparent
})

Custom Filename Template

You can customize the filename pattern:

bash
imgx app-icon icon.png --filename-template "custom-[size]@[scale]x.[ext]"
ts
await createAppIcon('icon.png', {
  filenameTemplate: 'custom-[size]@[scale]x.[ext]',
})

Available placeholders:

  • [size]: Icon size (e.g., 20, 29, 40)
  • [scale]: Scale factor (1, 2, 3)
  • [ext]: File extension (png)
  • [platform]: Platform name (ios, macos)

Generating Specific Sizes

You can generate only specific sizes if needed:

bash
imgx app-icon icon.png --platform ios --sizes 20,29,40
ts
await createAppIcon('icon.png', {
  platform: 'ios',
  sizes: [20, 29, 40], // Only generate these sizes
})

Integration with Xcode

The generated iOS and macOS AppIcon.appiconset directories can be directly used in Xcode:

  1. Generate the icons using imgx
  2. Drag the entire .appiconset folder into your Xcode project
  3. Select your target and set the AppIcon set as your app icon

Configuration

You can set default app icon generation options in your imgx.config.ts file:

ts
// imgx.config.ts
export default {
  appIcon: {
    outputDir: 'assets/app-icons',
    platform: 'all', // 'ios', 'macos', or 'all'
    background: '#ffffff', // Background for non-transparent contexts
    filenameTemplate: 'Icon-[size]@[scale]x.[ext]',
  },
}

Released under the MIT License.