Kokon
Nano Banana와 Generative Fill을 대신할 수 있는 무료 로컬 대안
Chromis는 기기 내 AI로 배경·객체 제거, 레이어·콜라주 편집이 가능한 무료 안드로이드 사진 편집기이며 사진이 폰에 남습니다
Chromis: a free Android photo editor with on-device AI background removal, object removal, layers and collages. Photos stay on your phone.
디자인Dart · PythonGitHub @ideaconnect온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A free, ad-supported Flutter Android photo editor with on-device AI. Cut out backgrounds, remove objects, stack layers, add captions and comic bubbles, build photo-grid collages, and export with transparency. Every AI model runs on the phone, so photos are never uploaded.
English, Polish, German, Spanish, French and Czech; light and dark themes; phones and tablets, portrait and landscape; Android 8.0 and newer.
Modeled on IDCT's Sticker Maker and built from the approved Claude Design mockup. The original build plan is in the GitHub milestones.
The complete list, with every count and control name, is the Play listing copy
in assets/store/en-US/details.md.
tool/check_store_listings.py keeps those numbers in step with the code, so
they are not repeated here, where nothing would.
| Job | Model | Licence |
|---|---|---|
| Background removal | ML Kit Subject Segmentation, or bundled U²-Netp | Google ML Kit terms / Apache-2.0 |
| Object selection | bundled MobileSAM | Apache-2.0 |
| Fill in, Best quality | bundled MI-GAN | MIT |
| Fill in, Low memory | PatchMatch content fill, pure Dart | ours |
The ONNX models run through flutter_onnxruntime. No cloud, no uploads. See
docs/inpaint-setup.md for how Fill in chooses
between its two tiers.
Free, with Google AdMob behind a UMP consent flow: a banner on Home, and a
rewarded interstitial before an export and once per editing session for the AI
tools. A one-time Go Pro purchase (chromis_pro_mode) removes every ad and
unlocks nothing else, because nothing else is locked. The live ad unit ids are
in lib/config/ads_config.dart; setup is in
docs/monetization-setup.md.
No account and no sign-in. The app sees only the photos the user picks, edits them on the phone, and uses the internet only for ads and purchases. Android Auto Backup is refused in the manifest, because its default would copy every imported photo into the user's Google Drive.
Closed-source app: only MIT / BSD / Apache-2.0 / SIL-OFL code, models and fonts
are bundled (no GPL/LGPL - ffmpeg was dropped; no CC-BY-NC models). Every bundled
font and model registers its licence in
lib/features/about/bundled_licenses.dart, a test fails the build if one is
missing, and the in-app Licenses screen shows them through Flutter's
LicenseRegistry. The phone's own fonts are offered only when the font file
itself declares the OFL or Apache 2.0.
Flutter 3.44.9, pinned in .github/workflows/ci.yml - read the Flutter pin
in CLAUDE.md before moving off 3.44.
flutter pub get
flutter run # debug on a connected device or emulator
flutter analyze
flutter test --exclude-tags golden # what CI runs
dart format lib test # CI fails on unformatted code
flutter gen-l10n # after editing lib/l10n/*.arb (output is committed)
flutter build apk --release # arm64-v8a + armeabi-v7a; x86_64 left out
flutter build appbundle --release # the Play upload; signs with android/key.properties
tech.idct.chromis · namespace: tech.idct.chromis · minSdk: 26lib/app (root, routing), lib/core (theme, models, rendering, widgets),
lib/features/*, lib/l10n (ARB files and generated code).integration_test/ runs on a device: checks that the AI models and fonts
really work there, plus a BDD suite (docs/e2e-testing.md).tool/ holds the Python generators and offline checks - branding, store
graphics and screenshots, label widths, listing copy.CLAUDE.md is the architecture guide: the rules each part of the
app depends on, and why.version: in pubspec.yaml and AboutInfo.appVersion
(lib/features/about/about_data.dart).docs/release/whatsnew-<version>.txt - six languages, written for
users. It goes to every user's update screen, so nothing about how a change
was made.v<version> and publish a GitHub release.Publishing the release runs .github/workflows/play.yml, which tests the tag,
builds the signed bundle and uploads it to Google Play's production track. A
pre-release uploads nothing. Setup and troubleshooting:
docs/release-and-data-safety.md, section 6.
Play Console, listing graphics and screenshots:
docs/ship-checklist.md.
website/ is plain HTML, published to
idct.tech/chromis by
.github/workflows/pages.yml on every push that touches it.
Every brand asset - launcher icon, adaptive layers, splash, Play listing icon,
in-app logo, website mark and favicon - comes out of the one icon design in
assets/branding/modern.png. Edit tool/gen_branding.py, never the outputs:
python tool/gen_branding.py # every asset, app + website
dart run flutter_launcher_icons # -> android/**/ic_launcher*
dart run flutter_native_splash:create # -> android/**/splash*
The composition is never re-arranged; the assets differ only in size, in whether the tile keeps its corners, and in what sits behind it:
#0A2127, a couple of steps from
the old dark panel colour, and needed a light ground; if the artwork ever goes
dark again, that is the fix, and it would have to clear the light theme too.© 2026 IDCT · Bartosz Pachołek · idct.tech