A polished WPF/.NET 8 desktop studio for creating image morph animations with G'MIC and FFmpeg.
- Modern WPF studio UI
- Drag & drop image import
- Source previews and workspace
- G'MIC morph engine with 2–300 base frames
- 12 / 15 / 24 / 25 / 30 / 60 FPS
- Live duration estimate
- Ping-Pong motion: Image A → Image B → Image A
- MP4 / GIF / PNG Frames output
- H.264 quality presets:
- Draft — CRF 28 / veryfast
- Standard — CRF 23 / medium
- High — CRF 18 / medium
- Maximum — CRF 16 / slow
- FFmpeg
image2numbered-frame pipeline - MP4
faststartflag for easier web playback - G'MIC/FFmpeg automatic discovery
- Processing progress and console log
- Cancellation
- Output validation
- Open output / folder shortcuts
- Copy G'MIC command
Base duration is approximately base frames / FPS.
With Ping-Pong enabled, output frames are 2 × base frames − 1, giving approximately twice the forward duration while returning to the first image.
Examples:
- 30 frames @ 30 FPS → ~1.00 sec
- 60 frames @ 30 FPS → ~2.00 sec
- 30 frames @ 30 FPS + Ping-Pong → ~1.97 sec
- 60 frames @ 30 FPS + Ping-Pong → ~3.97 sec
- Windows 10/11
- .NET 8 SDK/runtime
- G'MIC CLI
- FFmpeg with libx264 support
The application can discover G'MIC and FFmpeg from PATH and several common Windows locations. A known G'MIC CLI location is also supported.
dotnet restore
dotnet build -c Release
dotnet run --project .\ImageMorphStudio\ImageMorphStudio.csprojdotnet publish .\ImageMorphStudio\ImageMorphStudio.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=trueImage 1 + Image 2
→ G'MIC -morph
→ normalized numbered PNG frames
→ optional Ping-Pong sequence
→ FFmpeg image2
→ MP4 / GIF
FFmpeg's image2 demuxer is used because it is intended for creating video from numbered image sequences. H.264 MP4 uses libx264 CRF/preset controls.
- Keypoint / RBF morph editor
- Multi-image timeline
- Batch queue
- Transition effects
- Project save/load
- Frame browser/contact sheet
- Preset library
- Automatically normalizes both source images to the first image's pixel dimensions before morphing.
- Forces RGB mode before G'MIC morphing. G'MIC documents
resizefor exact geometry andto_rgbfor forcing RGB mode. - Captures G'MIC/FFmpeg stdout and stderr and includes diagnostics when a process exits non-zero.
- Makes G'MIC failures actionable instead of showing only an exit code.
This release fixes an FFmpeg/libx264 failure when the normalized source image has an odd width or height.
The MP4 pipeline uses yuv420p, which requires compatible even dimensions; v1.8 therefore converts the common render size to the nearest lower even dimensions before G'MIC morphing.
For example, a 985x1392 source becomes 984x1392.
The application logs the original and adjusted dimensions so the normalization is visible.