flutter_core_image_filters 0.0.25 flutter_core_image_filters: ^0.0.25 copied to clipboard
Image filters based on CoreImage fragment with useful image and video preview widgets
A flutter package for iOS and MacOS for applying CoreImage filters to image.
Usage #
Export processed image #
final inputSource = AssetInputSource('demo.jpeg');
final configuration = CIPhotoEffectChromeConfiguration();
final image = await configuration.export(inputSource);
CIImagePreview example #
import 'package:flutter_core_image_filters/flutter_core_image_filters.dart';
class PreviewPage extends StatefulWidget {
const PreviewPage({Key? key}) : super(key: key);
@override
State<PreviewPage> createState() => _PreviewPageState();
}
class _PreviewPageState extends State<PreviewPage> {
late CIPhotoEffectChromeConfiguration configuration;
late final CIImagePreviewController controller;
bool controllerReady = false;
@override
void initState() {
super.initState();
_prepare().whenComplete(() {
setState(() {});
});
}
Future<void> _prepare() async {
configuration = CIPhotoEffectChromeConfiguration();
controller =
await CIImagePreviewController.fromAsset(_assetPath);
await configuration.prepare();
await controller.connect(configuration);
controllerReady = true;
}
@override
void dispose() {
controller.dispose();
configuration.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return controllerReady
? CIImagePreview(controller: controller)
: const Offstage();
}
}
Divided preview sample #
import 'package:before_after_image_slider_nullsafty/before_after_image_slider_nullsafty.dart';
import 'package:flutter_core_image_filters/flutter_core_image_filters.dart';
class PreviewPage extends StatefulWidget {
const PreviewPage({Key? key}) : super(key: key);
@override
State<PreviewPage> createState() => _PreviewPageState();
}
class _PreviewPageState extends State<PreviewPage> {
late CIPhotoEffectChromeConfiguration configuration;
late final CIImagePreviewController sourceController;
late final CIImagePreviewController destinationController;
bool controllersReady = false;
@override
void initState() {
super.initState();
_prepare().whenComplete(() {
setState(() {});
});
}
Future<void> _prepare() async {
configuration = CIPhotoEffectChromeConfiguration();
sourceController = await CIImagePreviewController.fromAsset('demo.jpeg');
destinationController =
await CIImagePreviewController.fromAsset('demo.jpeg');
await configuration.prepare();
await destinationController.connect(configuration);
controllersReady = true;
}
@override
void dispose() {
sourceController.dispose();
destinationController.dispose();
configuration.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return controllersReady
? BeforeAfter(
thumbRadius: 0.0,
thumbColor: Colors.transparent,
beforeImage: CIImagePreview(
controller: sourceController,
),
afterImage: CIImagePreview(
controller: destinationController,
),
)
: const Offstage();
}
}
Export & save processed image #
import 'package:image/image.dart' as img;
import 'package:path_provider/path_provider.dart';
final inputSource = AssetInputSource('demo.jpeg');
final configuration = CIPhotoEffectChromeConfiguration();
final image = await configuration.export(inputSource);
final directory = await
getTemporaryDirectory();
final output =
File('${directory.path}/result.jpeg');
final bytes = await
image.toByteData();
final persistedImage = img.Image.fromBytes(
width: image.width,
height: image.height,
bytes: bytes!.buffer,
numChannels: 4,
);
img.JpegEncoder encoder = img.JpegEncoder();
final data = encoder.encode(persistedImage);
await
output.writeAsBytes(data);
Additional information #
Support status of CoreImage filters #
Status | Name | Display Name |
---|---|---|
✅ | CIAccordionFoldTransition | Accordion Fold Transition |
❌ | CIAdditionCompositing | Addition |
❌ | CIAffineClamp | Affine Clamp |
❌ | CIAffineTile | Affine Tile |
❌ | CIAffineTransform | Affine Transform |
✅ | CIAreaAverage | Area Average |
✅ | CIAreaHistogram | Area Histogram |
✅ | CIAreaLogarithmicHistogram | Area Logarithmic Histogram |
✅ | CIAreaMaximum | Area Maximum |
✅ | CIAreaMaximumAlpha | Area Maximum Alpha |
✅ | CIAreaMinimum | Area Minimum |
✅ | CIAreaMinimumAlpha | Area Minimum Alpha |
✅ | CIAreaMinMax | Area Min and Max |
✅ | CIAreaMinMaxRed | Area Min and Max Red |
❌ | CIAttributedTextImageGenerator | Attributed Text Image Generator |
❌ | CIAztecCodeGenerator | Aztec Code Generator |
❌ | CIBarcodeGenerator | Barcode Generator |
✅ | CIBarsSwipeTransition | Bars Swipe Transition |
✅ | CIBicubicScaleTransform | Bicubic Scale Transform |
❌ | CIBlendWithAlphaMask | Blend With Alpha Mask |
✅ | CIBlendWithBlueMask | Blend With Blue Mask |
✅ | CIBlendWithMask | Blend With Mask |
✅ | CIBlendWithRedMask | Blend With Red Mask |
✅ | CIBloom | Bloom |
✅ | CIBokehBlur | Bokeh Blur |
✅ | CIBoxBlur | Box Blur |
✅ | CIBumpDistortion | Bump Distortion |
✅ | CIBumpDistortionLinear | Bump Distortion Linear |
❌ | CICameraCalibrationLensCorrection | Lens Correction for AVC |
⁉️ | CICheckerboardGenerator | Checkerboard |
✅ | CICircleSplashDistortion | Circle Splash Distortion |
✅ | CICircularScreen | Circular Screen |
✅ | CICircularWrap | Circular Wrap Distortion |
✅ | CIClamp | Clamp |
✅ | CICMYKHalftone | CMYK Halftone |
❌ | CICode128BarcodeGenerator | Code 128 Barcode Generator |
✅ | CIColorAbsoluteDifference | Color Absolute Difference |
✅ | CIColorBlendMode | Color Blend Mode |
✅ | CIColorBurnBlendMode | Color Burn Blend Mode |
✅ | CIColorClamp | Color Clamp |
✅ | CIColorControls | Color Controls |
✅ | CIColorCrossPolynomial | Color Cross Polynomial |
❌ | CIColorCube | Color Cube |
❌ | CIColorCubesMixedWithMask | Color Cubes Mixed With Mask |
❌ | CIColorCubeWithColorSpace | Color Cube with ColorSpace |
❌ | CIColorCurves | Color Curves |
✅ | CIColorDodgeBlendMode | Color Dodge Blend Mode |
✅ | CIColorInvert | Color Invert |
❌ | CIColorMap | Color Map |
✅ | CIColorMatrix | Color Matrix |
✅ | CIColorMonochrome | Color Monochrome |
✅ | CIColorPolynomial | Color Polynomial |
✅ | CIColorPosterize | Color Posterize |
✅ | CIColorThreshold | Color Threshold |
✅ | CIColorThresholdOtsu | Color Threshold Otsu |
✅ | CIColumnAverage | Column Average |
✅ | CIComicEffect | Comic Effect |
✅ | CIConstantColorGenerator | Constant Color |
⁉️ | CIConvertLabToRGB | Convert Lab to RGB |
✅ | CIConvertRGBtoLab | Convert RGB to Lab |
✅ | CIConvolution3X3 | 3 by 3 Convolution |
✅ | CIConvolution5X5 | 5 by 5 Convolution |
✅ | CIConvolution7X7 | 7 by 7 Convolution |
✅ | CIConvolution9Horizontal | Horizontal 9 Convolution |
✅ | CIConvolution9Vertical | Vertical 9 Convolution |
✅ | CIConvolutionRGB3X3 | 3 by 3 RGB Convolution |
✅ | CIConvolutionRGB5X5 | 5 by 5 RGB Convolution |
✅ | CIConvolutionRGB7X7 | 7 by 7 RGB Convolution |
✅ | CIConvolutionRGB9Horizontal | Horizontal 9 RGB Convolution |
✅ | CIConvolutionRGB9Vertical | Vertical 9 RGB Convolution |
❌ | CICopyMachineTransition | Copy Machine |
❌ | CICoreMLModelFilter | CoreML Model Filter |
✅ | CICrop | Crop |
✅ | CICrystallize | Crystallize |
❌ | CIDarkenBlendMode | Darken Blend Mode |
❌ | CIDepthBlurEffect | Depth Blur Effect |
✅ | CIDepthOfField | Depth of Field |
⁉️ | CIDepthToDisparity | Depth To Disparity |
❌ | CIDifferenceBlendMode | Difference Blend Mode |
✅ | CIDiscBlur | Disc Blur |
❌ | CIDisintegrateWithMaskTransition | Disintegrate With Mask |
⁉️ | CIDisparityToDepth | Disparity To Depth |
❌ | CIDisplacementDistortion | Displacement Distortion |
❌ | CIDissolveTransition | Dissolve |
✅ | CIDither | Dither |
✅ | CIDivideBlendMode | Divide Blend Mode |
✅ | CIDocumentEnhancer | Document Enhancer |
✅ | CIDotScreen | Dot Screen |
✅ | CIDroste | Droste |
❌ | CIEdgePreserveUpsampleFilter | Edge Preserve Upsample Filter |
✅ | CIEdges | Edges |
✅ | CIEdgeWork | Edge Work |
✅ | CIEightfoldReflectedTile | Eightfold Reflected Tile |
❌ | CIExclusionBlendMode | Exclusion Blend Mode |
✅ | CIExposureAdjust | Exposure Adjust |
✅ | CIFalseColor | False Color |
❌ | CIFlashTransition | Flash |
✅ | CIFourfoldReflectedTile | Fourfold Reflected Tile |
✅ | CIFourfoldRotatedTile | Fourfold Rotated Tile |
❌ | CIFourfoldTranslatedTile | Fourfold Translated Tile |
✅ | CIGaborGradients | Gabor Gradients |
✅ | CIGammaAdjust | Gamma Adjust |
✅ | CIGaussianBlur | Gaussian Blur |
✅ | CIGaussianGradient | Gaussian Gradient |
❌ | CIGlassDistortion | Glass Distortion |
✅ | CIGlassLozenge | Glass Lozenge |
✅ | CIGlideReflectedTile | Glide Reflected Tile |
✅ | CIGloom | Gloom |
❌ | CIGuidedFilter | Guided Filter |
❌ | CIHardLightBlendMode | Hard Light Blend Mode |
✅ | CIHatchedScreen | Hatched Screen |
✅ | CIHeightFieldFromMask | Height Field From Mask |
✅ | CIHexagonalPixellate | Hexagonal Pixelate |
✅ | CIHighlightShadowAdjust | Highlight and Shadow Adjust |
✅ | CIHistogramDisplayFilter | Histogram Display |
✅ | CIHoleDistortion | Hole Distortion |
✅ | CIHueAdjust | Hue Adjust |
✅ | CIHueBlendMode | Hue Blend Mode |
❌ | CIHueSaturationValueGradient | Hue/Saturation/Value Gradient |
✅ | CIKaleidoscope | Kaleidoscope |
✅ | CIKeystoneCorrectionCombined | Combined Keystone Correction |
✅ | CIKeystoneCorrectionHorizontal | Horizontal Keystone Correction |
✅ | CIKeystoneCorrectionVertical | Vertical Keystone Correction |
❌ | CIKMeans | KMeans |
❌ | CILabDeltaE | Lab ∆E |
✅ | CILanczosScaleTransform | Lanczos Scale Transform |
✅ | CILenticularHaloGenerator | Lenticular Halo |
❌ | CILightenBlendMode | Lighten Blend Mode |
✅ | CILightTunnel | Light Tunnel Distortion |
❌ | CILinearBurnBlendMode | Linear Burn Blend Mode |
❌ | CILinearDodgeBlendMode | Linear Dodge Blend Mode |
✅ | CILinearGradient | Linear Gradient |
❌ | CILinearLightBlendMode | Linear Light Blend Mode |
✅ | CILinearToSRGBToneCurve | Linear to sRGB Tone Curve |
✅ | CILineOverlay | Line Overlay |
✅ | CILineScreen | Line Screen |
❌ | CILuminosityBlendMode | Luminosity Blend Mode |
❌ | CIMaskedVariableBlur | Masked Variable Blur |
✅ | CIMaskToAlpha | Mask to Alpha |
✅ | CIMaximumComponent | Maximum Component |
❌ | CIMaximumCompositing | Maximum |
✅ | CIMedianFilter | Median |
❌ | CIMeshGenerator | Mesh Generator |
✅ | CIMinimumComponent | Minimum Component |
❌ | CIMinimumCompositing | Minimum |
✅ | CIMix | Mix |
✅ | CIModTransition | Mod |
✅ | CIMorphologyGradient | Morphology Gradient |
✅ | CIMorphologyMaximum | Morphology Maximum |
✅ | CIMorphologyMinimum | Morphology Minimum |
✅ | CIMorphologyRectangleMaximum | Morphology Rectangle Maximum |
✅ | CIMorphologyRectangleMinimum | Morphology Rectangle Minimum |
✅ | CIMotionBlur | Motion Blur |
❌ | CIMultiplyBlendMode | Multiply Blend Mode |
❌ | CIMultiplyCompositing | Multiply |
✅ | CINinePartStretched | Nine Part Stretched |
✅ | CINinePartTiled | Nine Part Tiled |
✅ | CINoiseReduction | Noise Reduction |
✅ | CIOpTile | Op Tile |
✅ | CIOverlayBlendMode | Overlay Blend Mode |
❌ | CIPageCurlTransition | Page Curl |
✅ | CIPageCurlWithShadowTransition | Page Curl With Shadow |
❌ | CIPaletteCentroid | Palette Centroid |
❌ | CIPalettize | Palettize |
✅ | CIParallelogramTile | Parallelogram Tile |
❌ | CIPDF417BarcodeGenerator | PDF417 Barcode Generator |
⁉️ | CIPersonSegmentation | Person Segmentation |
✅ | CIPerspectiveCorrection | Perspective Correction |
✅ | CIPerspectiveRotate | Perspective Rotate |
✅ | CIPerspectiveTile | Perspective Tile |
✅ | CIPerspectiveTransform | Perspective Transform |
✅ | CIPerspectiveTransformWithExtent | Perspective Transform with Extent |
✅ | CIPhotoEffectChrome | Photo Effect Chrome |
✅ | CIPhotoEffectFade | Photo Effect Fade |
✅ | CIPhotoEffectInstant | Photo Effect Instant |
✅ | CIPhotoEffectMono | Photo Effect Mono |
✅ | CIPhotoEffectNoir | Photo Effect Noir |
✅ | CIPhotoEffectProcess | Photo Effect Process |
✅ | CIPhotoEffectTonal | Photo Effect Tonal |
✅ | CIPhotoEffectTransfer | Photo Effect Transfer |
✅ | CIPinchDistortion | Pinch Distortion |
❌ | CIPinLightBlendMode | Pin Light Blend Mode |
✅ | CIPixellate | Pixelate |
✅ | CIPointillize | Pointillize |
❌ | CIQRCodeGenerator | QR Code Generator |
✅ | CIRadialGradient | Radial Gradient |
✅ | CIRandomGenerator | Random Generator |
❌ | CIRippleTransition | Ripple |
✅ | CIRoundedRectangleGenerator | Rounded Rectangle Generator |
✅ | CIRowAverage | Row Average |
⁉️ | CISaliencyMapFilter | Saliency Map Filter |
✅ | CISampleNearest | Sample Nearest |
✅ | CISaturationBlendMode | Saturation Blend Mode |
❌ | CIScreenBlendMode | Screen Blend Mode |
✅ | CISepiaTone | Sepia Tone |
❌ | CIShadedMaterial | Shaded Material |
✅ | CISharpenLuminance | Sharpen Luminance |
✅ | CISixfoldReflectedTile | Sixfold Reflected Tile |
✅ | CISixfoldRotatedTile | Sixfold Rotated Tile |
✅ | CISmoothLinearGradient | Smooth Linear Gradient |
✅ | CISoftLightBlendMode | Soft Light Blend Mode |
❌ | CISourceAtopCompositing | Source Atop |
❌ | CISourceInCompositing | Source In |
❌ | CISourceOutCompositing | Source Out |
❌ | CISourceOverCompositing | Source Over |
✅ | CISpotColor | Spot Color |
✅ | CISpotLight | Spot Light |
✅ | CISRGBToneCurveToLinear | sRGB Tone Curve to Linear |
✅ | CIStarShineGenerator | Star Shine |
✅ | CIStraightenFilter | Straighten |
✅ | CIStretchCrop | Stretch Crop |
✅ | CIStripesGenerator | Stripes |
❌ | CISubtractBlendMode | Subtract Blend Mode |
✅ | CISunbeamsGenerator | Sunbeams |
✅ | CISwipeTransition | Swipe |
✅ | CITemperatureAndTint | Temperature and Tint |
❌ | CITextImageGenerator | Text Image Generator |
✅ | CIThermal | Thermal |
✅ | CIToneCurve | Tone Curve |
✅ | CITorusLensDistortion | Torus Lens Distortion |
✅ | CITriangleKaleidoscope | Triangle Kaleidoscope |
✅ | CITriangleTile | Triangle Tile |
✅ | CITwelvefoldReflectedTile | Twelvefold Reflected Tile |
✅ | CITwirlDistortion | Twirl Distortion |
✅ | CIUnsharpMask | Unsharp Mask |
✅ | CIVibrance | Vibrance |
✅ | CIVignette | Vignette |
✅ | CIVignetteEffect | Vignette Effect |
✅ | CIVividLightBlendMode | Vivid Light Blend Mode |
✅ | CIVortexDistortion | Vortex Distortion |
✅ | CIWhitePointAdjust | White Point Adjust |
✅ | CIXRay | X-Ray |
✅ | CIZoomBlur | Zoom Blur |
Sample results #
Examples #
- Big Flutter Filters Demo - big example of how to use filters and.