Photo Compressor, Resizer: KB
Photography app for Android
Photo Compressor & Resizer: a batch image tool built with Flutter
Photo Compressor, Resizer: KB is an Android app we designed, built and publish on Google Play. It shrinks photos to a target file size, resizes many images at once and converts between formats, entirely on the device. It is built with Flutter and is our longest-running app on the store.
Project type: CarrySo product. Photo Compressor, Resizer: KB is software CarrySo owns and publishes, not a client project. See the Photo Compressor & Resizer product page for features, platforms and store links; this case study covers the problem, approach and engineering.
- Platform
- Android 7.0 and later
- Built with
- Flutter and Dart
- First released on Google Play
- 12 April 2026
- Current version
- 2.1.0 (updated 7 October 2026)
- Google Play installs
- 1,000+
- Project type
- Owned product (published by CarrySo)
- Our role
- Product, design, development, publishing and maintenance
The problem
Job portals, admission forms and government sites often reject photos above a size limit such as 50 KB or 200 KB, and most people have no simple way to hit that number on a phone.
Online compressors solve it by uploading personal photos to a server, which many users are not comfortable with.
The solution
A local processing pipeline that compresses to a size target, resizes by pixels or percentage and converts PNG, JPG and WebP without any upload.
Batch selection, so hundreds of photos can be processed in one pass instead of one at a time.
Key features
- Compress photos to a target size in KB or MB
- Batch resize by exact width and height or by percentage
- Convert between PNG, JPG and WebP
- One-tap optimise that resizes and compresses together
- All processing happens on the device; no cloud upload
Screenshots
Screenshots from the app's Google Play listing.
How we built it
Feature-first architecture
The code is organised by feature under lib/src/features with a shared core layer, and GetX controllers own each screen's state. Immutable models are generated with freezed and json_serializable.
Processing off the UI thread
Image compression and conversion use flutter_image_compress and the image package, with heavy work moved off the main isolate so the interface keeps scrolling during large batches.
Release and growth plumbing
Firebase Cloud Messaging, Cloud Firestore remote configuration and Google Mobile Ads are wired through our shared growth package, so update prompts and ad frequency can be tuned without shipping a new build.
Testing
The repository has 10 automated test files, covering the processing pipeline controller, output checks, file naming, rotation settings and smoke tests at larger text scales.
Tech stack
| Technology | Used for |
|---|---|
| Flutter & Dart | Cross-platform UI and app logic |
| GetX | State management and navigation |
| flutter_image_compress, image | On-device compression, resizing and format conversion |
| freezed, json_serializable | Immutable data models |
| Firebase (Core, Firestore, Cloud Messaging) | Remote config and push notifications |
| Google Mobile Ads | Monetisation |
| carryso_growth_config (in-house) | Our shared Flutter package for remote app config, soft/hard update prompts, push notification device sync and ad frequency limits |
Sources: Google Play listing (com.imageresizer.compress); App source repository: pubspec.yaml, lib/src, test/. Store figures last checked 9 October 2026. Read the Photo Compressor & Resizer privacy policy.
Related services
Flutter app development
Flutter app development for Android and cross-platform apps: architecture, state management, Firebase, on-device processing, testing and store release.
Android app development
Android app development with Flutter: apps built for real devices, published and maintained on Google Play, with Data safety, privacy policies and updates.
Mobile app maintenance and updates
Mobile app maintenance for Flutter apps: crash monitoring, SDK and target API updates, Google Play policy compliance, update prompts and regular releases.