Buscar pacotes, repositórios e categorias de apps

Capa de flutter_image_filters
Detalhes do pacotev0.0.32

flutter_image_filters

Filtros de imagem baseados em shaders fragmentos OpenGL (SPIR-V) com widgets de visualização úteis

AndroidiOSWebmacOS
Downloads em 30 dias
5,4 mil
Curtidas
82
Pontos Pub
140

Instalar pacote

flutter pub add flutter_image_filters

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Um pacote Flutter que aplica filtros de imagem usando fragment shaders OpenGL (SPIR-V), permitindo efeitos visuais de alto desempenho. Inclui widgets de visualização para visualizar os resultados dos filtros em tempo real, tornando-o ideal para aplicativos que exigem manipulação dinâmica de imagens. O pacote suporta múltiplas plataformas, incluindo Android, iOS, Web e macOS, garantindo ampla compatibilidade. Desenvolvedores podem integrar shaders personalizados ou usar filtros embutidos para efeitos como desfoque, brilho, contraste e mais. Projetado para eficiência e facilidade de uso, é adequado para ferramentas de edição de fotos, aplicativos criativos e qualquer aplicação que precise de processamento de imagem em tempo real com pouco overhead.

Casos de uso

  • Edição de foto em tempo real
  • desenvolvimento criativo de aplicativos
  • Ferramentas de melhoria de imagem
  • Efeitos visuais em aplicativos multimídia
  • Visualizando os efeitos do filtro antes de aplicar

Principais recursos

  • shaders de fragmentos baseados em OpenGL
  • Widgets de visualização em tempo real
  • Suporte multiplataforma (Android, iOS, Web, macOS)
  • Renderização de alto desempenho
  • Suporte para filtros personalizados e embutidos

Indicado para

  • Desenvolvedores construindo aplicativos de edição de fotos
  • Criadores de ferramentas criativas
  • Aplicativos que exigem processamento de imagem em tempo real
  • Desenvolvedores Flutter direcionados para múltiplas plataformas
  • Usuários que desejam efeitos de imagem baseados em shader eficientes

Considerações

  • Requer conhecimento de shaders de fragmentos
  • Pode ter uso mais alto da GPU em dispositivos de baixa gama
  • Limitado à filtragem de imagens (não gráficos gerais)
  • Mais adequado para imagens estáticas ou quadros de vídeo, não para animações
  • A compilação de shader específica para plataforma pode exigir testes

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Pub codecov build Star on Github License: MIT

A flutter package for iOS and Android for applying OpenGL filters to image.

Usage

How to generate and use a bunch of filters
How to add custom filters
Export processed image
final texture = await TextureSource.fromAsset('demo.jpeg');
final configuration = BrightnessShaderConfiguration();
configuration.brightness = 0.5;
final image = await configuration.export(texture, texture.size);
Pipeline export

In case you see performance issues, look on how to generate and use bunch of filters

final texture = await TextureSource.fromAsset('demo.jpeg');
final brConfig = BrightnessShaderConfiguration();
brConfig.brightness = 0.5;

final stConfig = SaturationShaderConfiguration();
stConfig.saturation = 0.5;

final configuration = GroupShaderConfiguration();
configuration.add(brConfig);
configuration.add(stConfig);
final result = await configuration.export(texture, texture.size);
LookupTable sample

LUT

final texture = await TextureSource.fromAsset('demo.jpeg');
final configuration = SquareLookupTableShaderConfiguration();
await configuration.setLutAsset('lookup_amatorka.png');
final image = await configuration.export(texture, texture.size);
LookupTable HALD sample

LUT

final texture = await TextureSource.fromAsset('demo.jpeg');
final configuration = HALDLookupTableShaderConfiguration();
await configuration.setLutAsset('lookup_hald.png');
final image = await configuration.export(texture, texture.size);
ImageShaderPreview example
import 'package:flutter_image_filters/flutter_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 TextureSource texture;
  late BrightnessShaderConfiguration configuration;
  bool textureLoaded = false;

  @override
  void initState() {
    super.initState();
    configuration = BrightnessShaderConfiguration();
    configuration.brightness = 0.5;
    TextureSource.fromAsset('demo.jpeg')
        .then((value) => texture = value)
        .whenComplete(
          () => setState(() {
            textureLoaded = true;
          }),
        );
  }

  @override
  Widget build(BuildContext context) {
    return textureLoaded
        ? ImageShaderPreview(
            texture: texture,
            configuration: configuration,
          )
        : const Offstage();
  }
}
PipelineImageShaderPreview example
class PreviewPage extends StatefulWidget {
  const PreviewPage({Key? key}) : super(key: key);

  @override
  State<PreviewPage> createState() => _PreviewPageState();
}

class _PreviewPageState extends State<PreviewPage> {
  late TextureSource texture;
  late GroupShaderConfiguration configuration;
  bool textureLoaded = false;

  @override
  void initState() {
    super.initState();
    configuration = GroupShaderConfiguration();
    configuration.add(BrightnessShaderConfiguration()..brightness = 0.5);
    configuration.add(SaturationShaderConfiguration()..saturation = 0.5);
    TextureSource.fromAsset('demo.jpeg')
        .then((value) => texture = value)
        .whenComplete(
          () => setState(() {
        textureLoaded = true;
      }),
    );
  }

  @override
  Widget build(BuildContext context) {
    return textureLoaded
        ? PipelineImageShaderPreview(
      texture: texture,
      configuration: configuration,
    )
        : const Offstage();
  }
}
Divided preview sample
import 'package:before_after_image_slider_nullsafty/before_after_image_slider_nullsafty.dart';
import 'package:flutter_image_filters/flutter_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 TextureSource texture;
  late BrightnessShaderConfiguration configuration;
  bool textureLoaded = false;

  @override
  void initState() {
    super.initState();
    configuration = BrightnessShaderConfiguration();
    configuration.brightness = 0.5;
    TextureSource.fromAsset('demo.jpeg')
        .then((value) => texture = value)
        .whenComplete(
          () => setState(() {
            textureLoaded = true;
          }),
        );
  }

  @override
  Widget build(BuildContext context) {
    return textureLoaded
        ? BeforeAfter(
            thumbRadius: 0.0,
            thumbColor: Colors.transparent,
            beforeImage: ImageShaderPreview(
              texture: texture,
              configuration: NoneShaderConfiguration(),
            ),
            afterImage: ImageShaderPreview(
              texture: texture,
              configuration: configuration,
            ),
          )
        : const Offstage();
  }
}
Export & save processed image
import 'package:image/image.dart' as img;
import 'package:path_provider/path_provider.dart';



final texture = await TextureSource.fromAsset('demo.jpeg');
final configuration = BrightnessShaderConfiguration();
configuration.brightness = 0.5;
final image = await configuration.export(texture, texture.size);

final directory = await getTemporaryDirectory();
final output =
File('${directory.path}/result.jpeg');
final bytes = await image.toByteData();
final persistedImage = img.Image.fromBytes(
  image.width,
  image.height,
  bytes!.buffer.asUint8List(),
);
img.JpegEncoder encoder = img.JpegEncoder();
final data = encoder.encodeImage(persistedImage);
await output.writeAsBytes(data);

Additional information

Support status of GPUImage for iOS and GPUImage for Android shaders
Status Name
:white_check_mark: Brightness
:white_check_mark: Bulge Distortion
:white_check_mark: CGA Colorspace
:white_check_mark: Color Invert
:white_check_mark: Color Matrix
:white_check_mark: Contrast
:white_check_mark: Crosshatch
:white_check_mark: Exposure
:white_check_mark: False Color
:white_check_mark: Gamma
:white_check_mark: Glass Sphere
:white_check_mark: Grayscale
:white_check_mark: Halftone
:white_check_mark: Haze
:white_check_mark: Highlight Shadow
:white_check_mark: Hue
:white_check_mark: Lookup Table
:white_check_mark: Luminance
:white_check_mark: Luminance Threshold
:white_check_mark: Monochrome
:white_check_mark: Opacity
:white_check_mark: Pixelation
:white_check_mark: Posterize
:white_check_mark: RGB
:white_check_mark: Saturation
:white_check_mark: Solarize
:white_check_mark: Swirl
:white_check_mark: Vibrance
:white_check_mark: Vignette
:white_check_mark: White Balance
:white_check_mark: Zoom Blur
Sample results

Brightness Bulge Distortion CGA Colorspace Color Invert Color Matrix Contrast Crosshatch Exposure False Color Gamma Grayscale Halftone Haze Highlight Shadow Hue Square Lookup Table Luminance Threshold Luminance Monochrome Opacity Pixelation Posterize RGB Saturation Solarize Swirl Vibrance Vignette White Balance Zoom Blur

Examples

Maintainers

Categorias

Dependências

Lista de dependências 5 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.