Buscar pacotes, repositórios e categorias de apps

Capa de custom_image_crop
Detalhes do pacotev0.1.1

custom_image_crop

Um cortador de imagem personalizável. Você pode girar, escalar e transladar por meio de gestos ou um controlador.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
11,8 mil
Curtidas
89
Pontos Pub
150

Instalar pacote

flutter pub add custom_image_crop

Visão geral do pacote

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

Um cortador de imagem altamente personalizável para Flutter que permite aos usuários rotacionar, escalar e transladar imagens usando gestos intuitivos ou um controlador. Projetado para integração perfeita em múltiplas plataformas, oferece controle fino sobre a experiência de corte. Ideal para aplicativos que exigem manipulação avançada de imagens com interfaces responsivas e interativas. O pacote suporta Android, iOS, Web, macOS, Windows e Linux, garantindo ampla compatibilidade.

Casos de uso

  • Edição de imagem personalizada em aplicativos de fotos
  • Recorte da imagem do perfil do usuário
  • Ferramentas de seleção de imagem interativa
  • Redimensionamento dinâmico de imagens em aplicativos de design
  • Pré-processamento de imagem para fluxos de trabalho de aprendizado de máquina

Principais recursos

  • Rotação, dimensionamento e translação baseados em gestos
  • manipulação de imagem controlada por controlador
  • Suporte multiplataforma
  • Componentes de interface altamente personalizáveis
  • Visualização em tempo real durante o recorte
  • Design responsivo para todos os tamanhos de tela

Indicado para

  • Desenvolvedores construindo recursos de edição de imagem
  • Aplicativos que exigem cortes precisos de imagem
  • Ferramentas de manipulação de imagem multiplataforma
  • Interfaces de usuário interativas com tratamento de imagem
  • Prototipagem de fluxos avançados de edição de imagens

Considerações

  • Requer manipulação cuidadosa de imagens grandes para evitar problemas de desempenho
  • Pode ser necessário gerenciamento adicional de estado para casos de uso complexos
  • A configuração inicial exige compreensão sobre detectores e controladores de gestos
  • Não otimizado para imagens de muito alta resolução sem downsampling
  • Pré-configurações internas limitadas; personalização necessária para proporções específicas de cultivo

README original

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

custom_image_crop

An Image cropper that is customizable

pub package Build Status Coverage Status MIT license

customcropcircle customcropsquare customcropcircle

CustomImageCrop

CustomImageCrop(
  cropController: controller,
  image: const AssetImage('assets/test.png'),
),

You can provide the image using any Imageprovider.

Parameters

required image

The image that needs to be cropped

cropController

The controller used to adjust the image and crop it.

overlayColor

The color above the image that will be cropped

backgroundColor

The color behind the image. This color will also be used when there are gaps/empty space after the cropping

shape

The shape of the cropping path.

maskShape

The shape of the UI masking.

cropPercentage

How big the crop should be in regards to the width and height available to the cropping widget.

drawPath

How the border of the crop should be painted. default DottedCropPathPainter.drawPath and SolidCropPathPainter.drawPath are provided, but you can create/provide any CustomPaint.

pathPaint

Custom painting for the crop area border style.

canRotate

Whether to allow the image to be rotated.

customProgressIndicator

Custom widget for progress indicator.

ratio

Ratio of the cropping area. If shape`` is set to CustomCropShape.Ratio, this property is required. For example, to create a square crop area, use [Ratio(width: 1, height: 1). To create a rectangular crop area with a 16:9 aspect ratio, use [Ratio(width: 16, height: 9)`.

borderRadius

The radius for rounded corners of the cropping area.

forceInsideCropArea

Whether image area must cover clip path.

Controller Methods

addTransition

void addTransition(CropImageData transition)

Add the position, angle and scale to the current state. This can be used to adjust the image with sliders, buttons, etc.

setData

void setData(CropImageData data)

Set the position, angle and scale to the specified values. This can be used to center the image by pressing a button for example.

reset

void reset()

Reset the image to its default state

onCropImage

Future<MemoryImage> onCropImage()

Crops the image in its current state, this will return a MemoryImage that contains the cropped image

Example

See example/lib

class MyHomePage extends StatefulWidget {
  final String title;

  MyHomePage({
    required this.title,
    Key? key,
  }) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late CustomImageCropController controller;

  @override
  void initState() {
    super.initState();
    controller = CustomImageCropController();
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
        brightness: Brightness.dark,
      ),
      body: Column(
        children: [
          Expanded(
            child: CustomImageCrop(
              cropController: controller,
              image: const AssetImage('assets/test.png'), // Any Imageprovider will work, try with a NetworkImage for example...
            ),
          ),
          Row(
            children: [
              IconButton(icon: const Icon(Icons.refresh), onPressed: controller.reset),
              IconButton(icon: const Icon(Icons.zoom_in), onPressed: () => controller.addTransition(CropImageData(scale: 1.33))),
              IconButton(icon: const Icon(Icons.zoom_out), onPressed: () => controller.addTransition(CropImageData(scale: 0.75))),
              IconButton(icon: const Icon(Icons.rotate_left), onPressed: () => controller.addTransition(CropImageData(angle: -pi / 4))),
              IconButton(icon: const Icon(Icons.rotate_right), onPressed: () => controller.addTransition(CropImageData(angle: pi / 4))),
              IconButton(
                icon: const Icon(Icons.crop),
                onPressed: () async {
                  final image = await controller.onCropImage();
                  if (image != null) {
                    Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => ResultScreen(image: image)));
                  }
                },
              ),
            ],
          ),
          SizedBox(height: MediaQuery.of(context).padding.bottom),
        ],
      ),
    );
  }
}

Categorias

Dependências

Lista de dependências 2 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.