Screenshot cropping and resizing for Mac
Choose a frame. Check the result. Export for the App Store.
Features · Quick Start · Framing Modes · Build from Source · Development
ReSize is a native macOS utility for preparing PNG and JPEG screenshots for the Mac App Store. Crop at the original pixel scale, crop and resize a selected area, or fit the whole image into your chosen output size.
Use built-in Mac screenshot presets or custom dimensions, preview the encoded result, and export one image or a batch. Processing stays on your Mac, and exports leave your originals unchanged.
- Three framing modes — Crop Only, Crop & Resize, and Fit.
- Mac screenshot presets — Choose a built-in 16:10 size or enter custom dimensions.
- Precise crop controls — Drag the frame, center or reset it, and nudge it with the arrow keys.
- Custom aspect ratios — Lock dimensions together or choose 16:10, 16:9, 4:3, or 1:1.
- Source and Output views — Inspect the original and the encoded export preview, including JPEG compression.
- Pixel-level inspection — Fit to Window or view at 50%, 100%, and 200%; display zoom does not change the export.
- Batch workflow — Apply common settings to selected images while keeping each image's crop position.
- Flexible export — Export the current image, selected images, or all images.
- PNG and JPEG output — Adjust JPEG quality from 10–100% and choose a background color.
- Originals preserved — Exported copies use numbered names when a filename is already taken.
- Build and open ReSize.
- Click Open Images… (
⌘O), drag PNG/JPEG files into the window, or open them from Finder. - Choose a Mac preset or Custom, then select a framing mode.
- Adjust the crop in Source view. In Crop & Resize, drag a corner or use the crop-area slider to change its size.
- Switch to Output to check the encoded result and estimated file size.
- Click Export… (
⌘E) or Export All (⌘⇧E). The Export All menu also offers export of selected images when multiple images are selected.
To reuse settings, select images with ⌘-click or Shift-click, then choose Apply Settings to Selected. Size, mode, format, and background are shared; crop positions stay individual.
| Action | Shortcut |
|---|---|
| Open images | ⌘O |
| Export current image | ⌘E |
| Export all images | ⌘⇧E |
| Nudge crop frame | Arrow keys, 1 source pixel at a time |
| Move crop frame faster | Shift + arrow keys, 10 source pixels at a time |
Click the crop canvas before using the arrow keys.
| Mode | What it does | Best for |
|---|---|---|
| Crop Only — default | Moves a fixed-size frame at the original pixel scale, without resampling. The source must be large enough for the chosen output size. | Keeping UI and text detail while trimming the edges. |
| Crop & Resize | Resizes the selected crop area to the output dimensions while preserving its proportions. | Adjusting the framing and output size together. |
| Fit | Scales the whole image proportionally to fit inside the output dimensions, adding background space when needed. | Keeping all of the original image visible. |
All built-in presets use a 16:10 aspect ratio.
| Width | Height |
|---|---|
| 1280 px | 800 px |
| 1440 px | 900 px |
| 2560 px | 1600 px |
| 2880 px | 1800 px |
Choose Custom for other dimensions. Before submitting, check Apple's current screenshot specifications.
- Input and output: PNG and JPEG.
- Color: Opaque, 8-bit sRGB output in every mode. The background color fills transparent areas and empty space in Fit mode.
- Compression: PNG uses lossless compression; JPEG quality is adjustable from 10–100%.
- Preview: Output view decodes the encoded result so JPEG quality changes are visible before export.
- Size limits: Both imported images and output dimensions are limited to 60 megapixels and 16,384 pixels per side.
- Existing files: Numbered filenames avoid replacing existing files, and source files cannot be overwritten.
- Changed sources: If an opened source file changes on disk, remove it and open it again before exporting.
- Cancellation: Files already exported are kept; remaining work is skipped.
Crop Only + PNG avoids resampling and uses lossless compression. Color-profile conversion, bit-depth conversion, and filling transparent areas can still change pixel values. Exported files are not guaranteed to be byte-identical to their sources.
ReSize reads the image files you open and processes them locally using Apple's image frameworks. Images are not uploaded for conversion. Preview and export use the same processing pipeline.
- macOS 14+ deployment target
- Xcode 16+ for building the app; a Swift 6 toolchain for the Swift package tests
- No external app dependencies
The project's recorded development validation used macOS 26.6.2 and Xcode 26.6. Runtime compatibility on macOS 14 still needs validation; the deployment target alone does not confirm that testing.
Clone the repository, then run the build script on your Mac:
git clone https://github.com/Peerapat-J/ReSize.git
cd ReSize
./scripts/build.sh
open build/DerivedData/Build/Products/Debug/ReSize.appOr open ReSize.xcodeproj in Xcode, select the ReSize scheme, and run it.
The current configuration uses ad-hoc signing for local development. App Sandbox, notarization, and distribution setup are not configured.
| Layer | Technology |
|---|---|
| Language | Swift |
| Interface | SwiftUI and AppKit |
| Image processing | Core Graphics and Image I/O |
| File types | Uniform Type Identifiers |
| Core tests | Swift Package Manager and XCTest |
| App build | Xcode |
Run the existing core tests and development checks on macOS:
./scripts/test.sh
swiftlint lint --no-cache
git diff --checkThe lint command requires SwiftLint to be installed.
Generate sample images for manual GUI testing:
swift scripts/make-fixtures.swiftThe fixtures are written to /private/tmp/resize-fixtures.
- Architecture — Image processing, preview behavior, memory use, and export handling.
- Manual QA — GUI checks, fixtures, and expected results.
- Project scope — Initial release scope and implementation plan.
ReSize currently focuses on still-image preparation for Mac screenshots. Sessions are not saved across app restarts. Video App Previews, HEIC/TIFF/WebP input, iPhone/iPad presets, text overlays, and device frames are not supported.