So schneiden Sie Bilder zentriert zu Flutter – einfache Anleitung

Fügen Sie die erforderlichen Importanweisungen für das image Paket hinzu:

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

Erstellen Sie eine Funktion zum Zuschneiden und Speichern des zentrierten Bildes:

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');  
}  

Rufen Sie die Funktion mit dem Bilddateipfad, der Schnittbreite, der Schnitthöhe und dem gewünschten Dateinamen auf:

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);  
}  

Stellen Sie sicher, dass Sie 'image_path.png' den tatsächlichen Pfad zu Ihrer Bilddatei angeben. Der Code liest das Bild, berechnet die Mittelposition, erstellt ein Zuschneiderechteck darum herum und schneidet das Bild dann mithilfe des image Pakets zu. Das zugeschnittene Bild wird als neue PNG-Bilddatei mit dem benutzerdefinierten Dateinamen im Dokumentverzeichnis der Anwendung gespeichert. Der Dateipfad wird als Referenz in der Konsole ausgedruckt.

Denken Sie auch hier daran, bei der Arbeit mit Dateien und Bildern eine geeignete Fehlerbehandlung zu verwenden und auf Nullwerte zu prüfen.