watermark_kit
Fast watermarking for Flutter (iOS + Android). Image/text overlays for images and videos without FFmpeg (Core Image/AVFoundation on iOS; MediaCodec + GLES on Android).
2.2.0
9.8K downloads/mo
#2977 most downloaded on pub.dev
tttocklll/watermark_kit
What this package is like to depend on
Last release 6 months ago
02 Feb 2026
Ships on a steady schedule
a new release about every 2 months
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
11 months old
7 releases · first in 2025
7 releases in the last 12 months
see the full history below
Release timeline
7 releases · Sep 2025 to Feb 2026Releases
latest 7-
2.2.002 Feb 2026Release notes
Open source →Added\n- iOS & Android: animated GIF watermark support for video composition (per-frame overlay timing).\n- Example app: bundled sample GIF for video watermark testing.
Release notes
Open source →Added
- iOS & Android: Animated GIF watermark support for video composition (per-frame overlay timing).
- Example app: added a bundled sample GIF for video watermark testing.
-
2.1.129 Oct 2025Release notes
Open source →2.1.1
Fixed
- iOS: Resolved crash in
composeTextwhen converting colorArgb (0xFFFFFFFF) from Int64 to UInt32- Changed from unsafe
Int64 → Int32 → UInt32conversion to idiomaticUInt32(truncatingIfNeeded:) - Fixes "Fatal error: Not enough bits to represent the passed value" crash
- Resolves issue #2
- Changed from unsafe
- iOS: Fixed text watermark clipping on right side
- Improved canvas size calculation using
CTLineGetImageBoundsin addition toCTLineGetTypographicBounds - Ensures glyphs with italic, kerning, or ligatures are not clipped
- Increased padding from 4.0 to 8.0 for safety margin
- Improved canvas size calculation using
Release notes
Open source →Fixed
- iOS: Resolved crash in
composeTextwhen converting colorArgb (0xFFFFFFFF) from Int64 to UInt32- Changed from unsafe
Int64 → Int32 → UInt32conversion to idiomaticUInt32(truncatingIfNeeded:) - Fixes "Fatal error: Not enough bits to represent the passed value" crash
- Changed from unsafe
- iOS: Fixed text watermark clipping on right side
- Improved canvas size calculation using
CTLineGetImageBoundsin addition toCTLineGetTypographicBounds - Ensures glyphs with italic, kerning, or ligatures are not clipped
- Increased padding from 4.0 to 8.0 for safety margin
- Improved canvas size calculation using
- iOS: Resolved crash in
-
2.1.029 Oct 2025Release notes
Open source →2.1.0
Improved
- Android & iOS: Significantly enhanced watermark quality for both images and videos
- Android: High-quality filtering (FILTER_BITMAP_FLAG, DITHER_FLAG) with Matrix-based scaling for images; mipmaps + trilinear filtering (GL_LINEAR_MIPMAP_LINEAR) for video watermarks
- iOS: CILanczosScaleTransform for superior quality scaling (replaces simple CGAffineTransform); highQualityDownsample option added to CIContext
- Results in sharper, smoother watermarks with better detail preservation and anti-aliasing
Example
- Add save to gallery feature: users can now save watermarked images directly to their device photo library
- Cross-platform implementation using
galpackage with proper permission handling - "Save to Gallery" button added to Result preview card
- Cross-platform implementation using
Release notes
Open source →Improved
- Android & iOS: Significantly enhanced watermark quality for both images and videos
- Android: High-quality filtering (FILTER_BITMAP_FLAG, DITHER_FLAG) with Matrix-based scaling for images; mipmaps + trilinear filtering (GL_LINEAR_MIPMAP_LINEAR) for video watermarks
- iOS: CILanczosScaleTransform for superior quality scaling (replaces simple CGAffineTransform); highQualityDownsample option added to CIContext
- Results in sharper, smoother watermarks with better detail preservation and anti-aliasing
Example
- Add save to gallery feature: users can now save watermarked images directly to their device photo library
- Cross-platform implementation using
galpackage with proper permission handling - "Save to Gallery" button added to Result preview card
- Cross-platform implementation using
- Android & iOS: Significantly enhanced watermark quality for both images and videos
-
2.0.007 Sep 2025Release notes
Open source →Release Notes (v2.0.0) — Android Joins The Party 🎉
- Android support is in! Images, text, and full video watermarking on API 24+.
- Same simple API across iOS and Android. No FFmpeg, no drama.
Highlights
- Video pipeline: MediaCodec + OpenGL ES with a smooth hardware path.
- Smart fallback: auto-switch to ByteBuffer YUV + GLES when hardware gets grumpy.
- Progress + cancel: real-time updates and graceful aborts for long jobs.
- Audio passthrough: best‑effort copy to keep your soundtrack rolling.
- Anchors that “just work”: positions apply to the displayed orientation.
Fixes
- No more 100% freeze: proper decoder → encoder EOS propagation.
- Upright overlays: fixed vertical flip for text/image watermarks on Android.
- Calmer logs: added WMLog gate; warnings/errors only by default.
Compatibility
- iOS: unchanged, solid as ever.
- Android: minSdk 24. HEVC/Dolby Vision support varies by device (we auto‑fallback).
- Emulators may have limited codec support—physical devices recommended for final checks.
Notes
- Default codec is H.264. Use HEVC when supported for extra sparkle.
- The plugin itself requests no permissions; your app handles file/media access.
Upgrade
- pubspec: watermark_kit: ^2.0.0
- Example app updated; try the “Video” tab to see end‑to‑end watermarking.
Release notes
Open source →Added
- Android support for image, text, and video watermarking (API 24+).
- Hardware Surface pipeline with automatic fallback to ByteBuffer YUV + GLES when needed.
- Progress callbacks and cancellation, matching iOS.
- Audio passthrough (best effort).
Fixed
- Android: prevent video tasks from hanging at 100% by properly propagating decoder EOS to the encoder.
- Android: corrected overlay vertical flip (image/text) so placement is upright while keeping coordinates unchanged.
Changed
- README updated for cross‑platform support; removed iOS‑only notes.
- Default logs reduced; added
WMLoggate for verbose debugging on Android.
Notes
- Default codec is H.264; HEVC is used when supported. Some devices/emulators may not support HEVC/Dolby Vision.
- Minimum Android SDK is 24.
-
1.0.006 Sep 2025Release notes
Open source →Full Changelog: https://github.com/tttocklll/watermark_kit/commits/v1.0.0
Release notes
Open source →Added
- iOS video watermarking with progress/cancel (Core Image + AVFoundation Reader/Writer)
- Pigeon APIs:
composeVideo,cancel, andWatermarkCallbacks(progress/completed/error) - Dart:
VideoTaskexposesprogressStream anddoneFuture - Example: dedicated Video tab with text/image watermark selection and output preview player
- Pigeon APIs:
Changed
- Package description updated to reflect image + video support
- iOS Podspec metadata (summary/homepage/author) updated; minimum iOS set to 15.0
Notes
- Default codec is H.264;
codec: 'hevc'can be used where supported - Audio is passed through on a best‑effort basis
- iOS video watermarking with progress/cancel (Core Image + AVFoundation Reader/Writer)
-
0.0.206 Sep 2025Release notes
Open source →Added
- Text watermark support for images: new
WatermarkKit.composeTextImage(...)API.- Placement options mirror
composeImage(anchor, margin, offset, units). - Text style:
fontFamily,fontSizePt(orwidthPercentfit),fontWeight,colorArgb,opacity.
- Placement options mirror
- Pigeon host method
WatermarkApi.composeTextand Dart client wiring (MethodChannel fallback retained). - Example app: "Text Watermark" section and Compose Text action.
Changed/Chore
- README updated with text watermark usage and API reference.
- Text watermark support for images: new
-
0.0.106 Sep 2025Release notes
Open source →Initial release.
Added
- iOS image watermarking plugin using Core Image (Metal-backed CIContext under the hood).
- Public API:
WatermarkKit.composeImage(...)that composes a watermark image over a base image and returns encoded bytes.- Options:
anchor,margin(withmarginUnit: 'px'|'percent'),widthPercent,opacity,offsetX/offsetY(withoffsetUnit),format: 'png'|'jpeg',quality(JPEG). - Anchors:
topLeft,topRight,bottomLeft,bottomRight,center.
- Options:
- Pigeon-based typed bridge (Dart/Swift) for
composeImage. - Example app to pick base/watermark from gallery, tweak options, and preview the result.
Changed/Chore
- Simplified README to state iOS support without version numbers.
- Committed example iOS CocoaPods setup (Podfile/lock, xcconfig includes) for reproducible builds.
- Removed unused template tests and misc files; tightened .gitignore.