English | ็ฎไฝไธญๆ
Chimera is a modern Android image stitching application
Developed using Kotlin and Jetpack Compose
Allows stitching multiple images into a long or wide image in different modes
Supports JPEG, PNG, WEBP
Support: English, Spanish, Japanese, Simplified Chinese, Traditional Chinese (HK), Traditional Chinese (TW)
The app supports multiple selectors and can be used even without granting any permissions:
-
Photo Picker
- No permissions required
- Compatible with SDK 31+ or devices that can receive Google component updates
- Google-recommended modern selection method
- However, when selecting multiple images, the URL order may be scrambled, and it can only view albums (photo pages) stored in the public Picture directory
-
Embedded Picker
- Requires storage permission:
READ_MEDIA_IMAGES(SDK 33+) orREAD_EXTERNAL_STORAGE(SDK 32-) - Powerful selector extracted from the ImageToolbox project, supports search and album viewing
- Beautiful interface that solves Photo Picker issues
- Requires storage permission:
-
Storage Access Framework Selector (SAF)
- No permissions required
- Compatible with all SDK versions (29-36)
- Secure file access through system file picker
- Horizontal stitching: Arrange images from left to right horizontally
- Vertical stitching: Arrange images from top to bottom vertically
- Image spacing: Supports 0-50px image spacing settings, filled with black pixels
- Width/Height scaling:
- Minimum: Scale all images to the minimum width/height
- Original: Keep original image dimensions
- Maximum: Scale all images to the maximum width/height
- Image reordering: After selecting images, you can long-press and drag selected images to change order
- Image overlay stitching: Display part of one image overlaid with the next image, can be used to create video subtitle screenshots
- Overlay area ratio: Adjustable overlay area ratio from 0-100%
- ๐ Dark mode: Supports manual switching and following system settings
- ๐ Dynamic color theme: Dynamic theme colors based on system wallpaper color (Android 12+ only)
- Note: Requires using native Android wallpaper app, third-party wallpaper programs including some OEM manufacturers' cannot be recognized
- ๐ Predefined color schemes: Bocchi, Nijika, Ryo, Kita themes
- ๐๏ธ Custom colors: Can create custom color schemes
- ๐พ Image output settings: Supports PNG, JPEG and WEBP formats, adjustable output quality (PNG default lossless, not adjustable)
- โก Multi-threaded acceleration: When enabled, will use parallel acceleration process
- ๐ง Increase memory threshold: Default memory threshold is 50% of device RAM, when enabled will increase to 80%
- ๐ Open the Chimera app
- ๐ผ๏ธ Click the "Select Images" button to select images to stitch
- โ๏ธ Adjust stitching parameters (direction, scaling mode, spacing, etc.)
- ๐งฑ Click the "Start Stitching" button
- ๐ Preview the stitching result on the result page, can choose to save to album or share with other apps
- MVVM architecture pattern: Uses Model-View-ViewModel architecture to separate data logic and UI logic
- Single Activity with multiple Compose interfaces: The entire app is built on a single Activity and multiple Compose interfaces
- Kotlin & Coroutines
- Jetpack Compose
- Android Architecture Components
Image stitching is limited by both file format technical specifications and device memory:
- JPEG: Technical maximum size is 65,535 ร 65,535 pixels (16-bit limit), App defaults to JPEG format output
- WebP: Whether lossless or lossy, the maximum size is typically limited to around 16,384 ร 16,384 pixels
- PNG: Technical maximum size up to 4,294,967,295 ร 4,294,967,295 pixels (32-bit unsigned integer limit), theoretically the highest
Important
Regardless of format, the biggest limitation in actual operation is device memory (RAM) and Android VM mechanism limitations.
The memory required for decoding large images (width ร height ร 4 bytes/pixel) can easily cause app crashes (OOM Crash).
If you have many or large images, it is recommended to go to settings and adjust to PNG format and enable increased memory threshold.
App supports processing over 100 images, but requires significant RAM. Due to Android VM limitations, we recommend using a desktop application for large batches.
Testing shows that PhotoPicker (PickMultipleVisualMedia) does not guarantee the order of returned URIs. When users select many images, the returned list order may be scrambled. This is a known platform issue that Google has not fixed.
Related issue discussion link: https://issuetracker.google.com/issues/264215151
For Embedded Picker and SAF selectors, image order is correct.
You can obtain the app through the following methods:
- ๐ฅ Download the latest APK file from GitHub Releases
- ๐ง Clone the source code and build the project yourself
Click Here
-
Android Studio Narwhal | 2025.1.3 (or higher)
-
JDK 21 (recommended to use Android Studio's built-in JetBrains Runtime 21)
-
Android SDK obtained through Android Studio
git clone --depth 1 https://github.com/ReRokutosei/Chimera.git// For example
sdk.dir=D\:\\yourpath\\AndroidSdk
Click the Build menu at the top of Android Studio
-> Generate Signed App Bundle or APK
-> Follow instructions to generate key
-> Store key in ./keystore/Chimera.jks
-
In your local development environment, create Gradle config file at:
-
Windows:
C:\Users\{username}\.gradle\gradle.properties -
macOS/Linux:
~/.gradle/gradle.properties -
Add your signing configuration to this file:
KEYSTORE_PATH=../keystore/Chimera.jks
KEYSTORE_PASSWORD=yourpassword
KEY_ALIAS=chimera_release
KEY_PASSWORD=yourpassword./gradlew assembleReleaseThis app does not request any network permissions, does not collect, store, process, or transmit any of your personal information. All operations are performed locally on your device.
See Privacy Policy file for details.
The app is provided "as is" without any warranties. We are not responsible for any consequences arising from the use of this app.
See Disclaimer file for details.
This project is licensed under the GNU General Public License v3.0. See LICENSE file for details.
This project uses Embedded Picker, Fancy Slider, Image Reorder Carousel components from ImageToolbox (Apache License 2.0), thanks to the original project contributors for their excellent work!
See directory
./t8rinfor details
If you have more image processing needs, I highly recommend trying the powerful ImageToolbox
App Icon Design by Freepik
The background of the app Settings page, and README Screenshots are from the anime "Bocchi the Rock!", copyright belongs to "ยฉHAMAJI AKIใปHoubunsha/Bocchi the Rock! Production Committee"
Click Here to View
- AboutLibraries Core Library 13.1.0 | Under Apache License 2.0
- Accompanist Drawable Painter library 0.32.0 | Under Apache License 2.0
- Activity 1.11.0 | Under Apache License 2.0
- Activity Compose 1.11.0 | Under Apache License 2.0
- Activity Kotlin Extensions 1.11.0 | Under Apache License 2.0
- Android App Startup Runtime 1.1.1 | Under Apache License 2.0
- Android Arch-Common 2.2.0 | Under Apache License 2.0
- Android Arch-Runtime 2.2.0 | Under Apache License 2.0
- Android ConstraintLayout 2.1.0 | Under Apache License 2.0
- Android ConstraintLayout Core 1.0.0 | Under Apache License 2.0
- Android Graphics Path 1.0.1 | Under Apache License 2.0
- Android Resource Inspection - Annotations 1.0.1 | Under Apache License 2.0
- Android Tracing 1.2.0 | Under Apache License 2.0
- AndroidX Autofill 1.0.0 | Under Apache License 2.0
- AndroidX Futures 1.1.0 | Under Apache License 2.0
- androidx.core:core-viewtree 1.0.0 | Under Apache License 2.0
- androidx.customview:poolingcontainer 1.0.0 | Under Apache License 2.0
- Annotation 1.9.1 | Under Apache License 2.0
- Annotation 1.7.0 | Under Apache License 2.0
- AppCompat 1.7.1 | Under Apache License 2.0
- AppCompat Resources 1.7.1 | Under Apache License 2.0
- atomicfu 0.23.2 | Under Apache License 2.0
- coil 2.7.0 | Under Apache License 2.0
- coil-base 2.7.0 | Under Apache License 2.0
- coil-compose 2.7.0 | Under Apache License 2.0
- coil-compose-base 2.7.0 | Under Apache License 2.0
- collections 1.5.0 | Under Apache License 2.0
- collections 1.7.0 | Under Apache License 2.0
- Collections Kotlin Extensions 1.5.0 | Under Apache License 2.0
- colorpicker-compose 1.1.2 | Under Apache License 2.0
- Compose Animation 1.9.4 | Under Apache License 2.0
- Compose Animation 1.7.0 | Under Apache License 2.0
- Compose Animation Core 1.9.4 | Under Apache License 2.0
- Compose Animation Core 1.7.0 | Under Apache License 2.0
- Compose Foundation 1.9.4 | Under Apache License 2.0
- Compose Foundation 1.7.0 | Under Apache License 2.0
- Compose Geometry 1.9.4 | Under Apache License 2.0
- Compose Geometry 1.7.0 | Under Apache License 2.0
- Compose Graphics 1.9.4 | Under Apache License 2.0
- Compose Graphics 1.7.0 | Under Apache License 2.0
- Compose Layouts 1.9.4 | Under Apache License 2.0
- Compose Layouts 1.7.0 | Under Apache License 2.0
- Compose Material Components 1.9.4 | Under Apache License 2.0
- Compose Material Icons Core 1.7.8 | Under Apache License 2.0
- Compose Material Icons Extended 1.7.8 | Under Apache License 2.0
- Compose Material Ripple 1.9.4 | Under Apache License 2.0
- Compose Material3 Components 1.5.0-alpha04 | Under Apache License 2.0
- Compose Navigation 2.9.6 | Under Apache License 2.0
- Compose Runtime 1.9.4 | Under Apache License 2.0
- Compose Runtime 1.7.0 | Under Apache License 2.0
- Compose Runtime Annotation 1.9.4 | Under Apache License 2.0
- Compose Saveable 1.9.4 | Under Apache License 2.0
- Compose Saveable 1.7.0 | Under Apache License 2.0
- Compose Testing manifest dependency 1.9.4 | Under Apache License 2.0
- Compose Tooling 1.9.4 | Under Apache License 2.0
- Compose Tooling Data 1.9.4 | Under Apache License 2.0
- Compose UI 1.9.4 | Under Apache License 2.0
- Compose UI Preview Tooling 1.9.4 | Under Apache License 2.0
- Compose UI primitives 1.7.0 | Under Apache License 2.0
- Compose UI Text 1.9.4 | Under Apache License 2.0
- Compose UI Text 1.7.0 | Under Apache License 2.0
- Compose Unit 1.9.4 | Under Apache License 2.0
- Compose Unit 1.7.0 | Under Apache License 2.0
- Compose Util 1.9.4 | Under Apache License 2.0
- Compose Util 1.7.0 | Under Apache License 2.0
- Core 1.17.0 | Under Apache License 2.0
- Core Kotlin Extensions 1.17.0 | Under Apache License 2.0
- DataStore 1.1.7 | Under Apache License 2.0
- DataStore Core 1.1.7 | Under Apache License 2.0
- DataStore Core Okio 1.1.7 | Under Apache License 2.0
- DynamicAnimation 1.1.0 | Under Apache License 2.0
- Emoji2 1.4.0 | Under Apache License 2.0
- Emoji2 Views Helper 1.4.0 | Under Apache License 2.0
- error-prone annotations 2.15.0 | Under Apache License 2.0
- Experimental annotation 1.4.1 | Under Apache License 2.0
- Graphics Shapes 1.0.1 | Under Apache License 2.0
- Guava ListenableFuture only 1.0 | Under Apache License 2.0
- JetBrains Java Annotations 23.0.0 | Under Apache License 2.0
- Jetpack Compose Libraries BOM 2025.11.00 | Under Apache License 2.0
- JSpecify annotations 1.0.0 | Under Apache License 2.0
- Kotlin Libraries bill-of-materials 1.8.22 | Under Apache License 2.0
- Kotlin Stdlib 2.2.21 | Under Apache License 2.0
- Kotlin Stdlib Common 2.2.21 | Under Apache License 2.0
- Kotlin Stdlib Jdk7 1.9.0 | Under Apache License 2.0
- Kotlin Stdlib Jdk8 1.9.0 | Under Apache License 2.0
- kotlinx-collections-immutable 0.4.0 | Under Apache License 2.0
- kotlinx-coroutines-android 1.10.2 | Under Apache License 2.0
- kotlinx-coroutines-bom 1.10.2 | Under Apache License 2.0
- kotlinx-coroutines-core 1.10.2 | Under Apache License 2.0
- kotlinx-serialization-bom 1.9.0 | Under Apache License 2.0
- kotlinx-serialization-core 1.9.0 | Under Apache License 2.0
- kotlinx-serialization-json 1.9.0 | Under Apache License 2.0
- Lifecycle Kotlin Extensions 2.9.4 | Under Apache License 2.0
- Lifecycle LiveData 2.9.4 | Under Apache License 2.0
- Lifecycle LiveData Core 2.9.4 | Under Apache License 2.0
- Lifecycle Process 2.9.4 | Under Apache License 2.0
- Lifecycle Runtime 2.9.4 | Under Apache License 2.0
- Lifecycle Runtime 2.8.3 | Under Apache License 2.0
- Lifecycle Runtime Compose 2.9.4 | Under Apache License 2.0
- Lifecycle Runtime Compose 2.8.3 | Under Apache License 2.0
- Lifecycle ViewModel 2.9.4 | Under Apache License 2.0
- Lifecycle ViewModel 2.8.3 | Under Apache License 2.0
- Lifecycle ViewModel Compose 2.9.4 | Under Apache License 2.0
- Lifecycle ViewModel Kotlin Extensions 2.9.4 | Under Apache License 2.0
- Lifecycle ViewModel with SavedState 2.9.4 | Under Apache License 2.0
- Lifecycle-Common 2.9.4 | Under Apache License 2.0
- Lifecycle-Common 2.8.3 | Under Apache License 2.0
- Lifecycle-Common for Java 8 2.9.4 | Under Apache License 2.0
- LiveData Core Kotlin Extensions 2.9.4 | Under Apache License 2.0
- Material Components for Android 1.13.0 | Under Apache License 2.0
- Navigation Common 2.9.6 | Under Apache License 2.0
- Navigation Runtime 2.9.6 | Under Apache License 2.0
- okhttp 4.12.0 | Under Apache License 2.0
- okio 3.9.0 | Under Apache License 2.0
- Parcelize Runtime 2.2.21 | Under Apache License 2.0
- Preferences DataStore 1.1.7 | Under Apache License 2.0
- Preferences DataStore Core 1.1.7 | Under Apache License 2.0
- Preferences DataStore Proto 1.1.7 | Under Apache License 2.0
- Preferences External Protobuf 1.1.7 | Under BSD 3-Clause "New" or "Revised" License
- Profile Installer 1.4.0 | Under Apache License 2.0
- RecyclerView 1.4.0 | Under Apache License 2.0
- Reorderable 3.0.0 | Under Apache License 2.0
- Saved State 1.3.3 | Under Apache License 2.0
- Saved State Compose 1.3.3 | Under Apache License 2.0
- SavedState Kotlin Extensions 1.3.3 | Under Apache License 2.0
- SubsamplingScaleImageView 3.10.0 | Under Apache License 2.0
- Support AnimatedVectorDrawable 1.1.0 | Under Apache License 2.0
- Support CardView v7 1.0.0 | Under Apache License 2.0
- Support Coordinator Layout 1.1.0 | Under Apache License 2.0
- Support Cursor Adapter 1.0.0 | Under Apache License 2.0
- Support Custom View 1.1.0 | Under Apache License 2.0
- Support Drawer Layout 1.1.1 | Under Apache License 2.0
- Support ExifInterface 1.3.7 | Under Apache License 2.0
- Support fragment 1.5.4 | Under Apache License 2.0
- Support Interpolators 1.0.0 | Under Apache License 2.0
- Support loader 1.0.0 | Under Apache License 2.0
- Support VectorDrawable 1.1.0 | Under Apache License 2.0
- Support View Pager 1.0.0 | Under Apache License 2.0
- Transition 1.5.0 | Under Apache License 2.0
- VersionedParcelable 1.1.1 | Under Apache License 2.0
- ViewPager2 1.1.0-beta02 | Under Apache License 2.0

