filmkit 0.7.1
filmkit: ^0.7.1 copied to clipboard
Photo and video editing for Flutter: native export, LUT filters and an Instagram-style editor.
0.7.1 #
- Example: picks with filmkit_picker instead of insta_assets_picker. The app no longer needs the workarounds for insta_assets_crop (a raised
compileSdk, CocoaPods on iOS). The README points to filmkit_picker.
0.7.0 #
CropViewis public: the crop tool's pan and pinch-zoom over any child, for a crop preview outside the editor (a picker).showGrid:hides the grid while it stays interactive.FilmkitEditor.open(title:)/FilmkitEditorPage.title: a title in the app bar, e.g. "2/4" when editing several files in a row.EditorOptions.copyWithandEditorTexts.copyWith.
0.6.2 #
- Editor: pinch-to-zoom in the crop tool follows the fingers. When both fingers moved in the same frame, the second update started from the state before the first one: the zoom lagged and the image drifted sideways.
- Widget tests for the editor screen, the crop view, the trim bar and
LutFilter(with fake native code and video player), and a CI on GitHub Actions.
0.6.1 #
- Android:
getVideoFramefalls back to the closest key frame when the exact frame times out (4K 10-bit HDR videos on a Pixel 8a), instead of failing. Later frames of that file go straight to key frames. - Editor: a video whose thumbnails fail still opens (without thumbnails). Before, 4K HDR videos showed "Can't open this file" on Android.
0.6.0 #
CropState.fromRect: a crop state from a normalized rect, e.g. the area chosen in a picker.- Example: pick with insta_assets_picker, then edit with filmkit (the picker's ratio and area become the editor's initial crop). See the README.
0.5.0 #
- Re-editing:
EditorResult.state(EditorState: look, intensity, adjustments, crop ratio / zoom / position, trim), serializable to JSON, andFilmkitEditor.open(initialState:)to reopen the editor where the user left off. EditorResult.lookIntensity,adjustmentsandaspectnow read fromstate.
0.4.0 #
- Instagram-style editor:
FilmkitEditor.open(context, path:)with filters (10 built-in looks generated in Dart, or your ownLooks /.cubefiles) and their intensity, adjustments (brightness, contrast, saturation, warmth, baked into the same LUT), crop with ratios, pan and zoom, and video trim with a thumbnail strip. Returns anEditorResult(theEditSpec, and the exported file unlessEditorOptions.exportis false). Labels configurable withEditorTexts. LutFilterkeeps the previous table applied while a new one loads, and keeps its child's state when the filter is toggled.- Depends on
video_playerfor the video preview.
0.3.0 #
- Photo export:
Filmkit.exportImage(JPEG, HEIC, PNG, WebP… in, JPEG out) with the sameEditSpecas videos (crop in displayed coordinates,maxDimension, LUT). The EXIF orientation is applied to the pixels; capture date, camera and exposure metadata are kept, the location only withkeepLocation. Android decodes only the cropped region at the needed resolution.
0.2.0 #
- LUT filters:
CubeLut(.cubeparsing and writing, intensity, CPU reference),EditSpec.lut/lutIntensityapplied by the export (Media3SingleColorLut, Core ImageCIColorCubeWithColorSpacein CoreMedia's BT.709 space), and theLutFilterwidget for the live preview (shader), which renders the same colors. Filmkit.getVideoFrame: a frame as displayed, optionally scaled down.
0.1.0 #
- Headless video export:
Filmkit.exportVideowith anEditSpec(trim, crop in displayed coordinates, max output size), progress, cancellation and several exports at once. Media3 Transformer on Android, AVFoundation on iOS. Output: MP4, H.264 + AAC, SDR. - HDR sources are tone mapped to SDR. On Android, OpenGL tone mapping falls back to MediaCodec, then to a
hdrUnsupportederror. Filmkit.getVideoInfo: displayed size, duration, audio and HDR flags.
0.0.1 #
- Project scaffold.
