Afbeeldingen bijsnijden in het midden Flutter- eenvoudige handleiding

Voeg de benodigde importverklaringen voor het image pakket toe:

import 'dart:io';  
import 'package:image/image.dart' as img;  
import 'package:path_provider/path_provider.dart';  

Maak een functie om de gecentreerde afbeelding bij te snijden en op te slaan:

Future<void> cropAndSaveCenteredImage(String imagePath, double cropWidth, double cropHeight, String fileName) async {  
  // Read the image from the file path  
  File imageFile = File(imagePath);  
  List<int> imageBytes = await imageFile.readAsBytes();  
  img.Image image = img.decodeImage(imageBytes);  
  
  // Calculate the center position for cropping  
  int centerX = image.width ~/ 2;  
  int centerY = image.height ~/ 2;  
  
  // Calculate the crop rectangle based on the center position  
  int cropX =(centerX- cropWidth ~/ 2).clamp(0, image.width);  
  int cropY =(centerY- cropHeight ~/ 2).clamp(0, image.height);  
  
  // Crop the image  
  img.Image croppedImage = img.copyCrop(image, cropX, cropY, cropWidth.toInt(), cropHeight.toInt());  
  
  // Get the document directory to save the image  
  Directory directory = await getApplicationDocumentsDirectory();  
  String filePath = '${directory.path}/$fileName.png';  
  
  // Save the image to file  
  File file = File(filePath);  
  await file.writeAsBytes(img.encodePng(croppedImage));  
  
  // Display the file path  
  print('Image saved to: $filePath');  
}  

Roep de functie aan met het afbeeldingsbestandspad, de snijbreedte, de snijhoogte en de gewenste bestandsnaam:

void main() async {  
  // Replace 'image_path.png' with the actual path of your image file  
  String imagePath = 'image_path.png';  
  
  // Define the desired crop width and height  
  double cropWidth = 200.0;  
  double cropHeight = 200.0;  
  
  // Define the desired filename(without the extension)  
  String fileName = 'cropped_image';  
  
  // Crop and save the centered image with the specified filename  
  await cropAndSaveCenteredImage(imagePath, cropWidth, cropHeight, fileName);  
}  

Zorg ervoor dat u vervangt 'image_path.png' door het daadwerkelijke pad naar uw afbeeldingsbestand. De code leest de afbeelding, berekent de middenpositie, maakt er een bijsnijdrechthoek omheen en snijdt vervolgens de afbeelding bij met behulp van het image pakket. De bijgesneden afbeelding wordt opgeslagen als een nieuw PNG-afbeeldingsbestand met de aangepaste bestandsnaam in de documentmap van de toepassing. Het bestandspad wordt ter referentie in de console afgedrukt.

Nogmaals, vergeet niet om de juiste foutafhandeling te gebruiken en te controleren op null-waarden bij het werken met bestanden en afbeeldingen.