Hvordan beskjære bilder sentrert i Flutter- Enkel veiledning

Legg til de nødvendige importerklæringene for image pakken:

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

Lag en funksjon for å beskjære og lagre det sentrerte bildet:

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

Kall funksjonen med bildefilbanen, beskjæringsbredden, beskjæringshøyden og ønsket filnavn:

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

Sørg for å erstatte 'image_path.png' med den faktiske banen til bildefilen. Koden vil lese bildet, beregne midtposisjonen, lage et beskjæringsrektangel rundt det, og deretter beskjære bildet ved hjelp av pakken image. Det beskårede bildet vil bli lagret som en ny PNG-bildefil med det tilpassede filnavnet i programmets dokumentkatalog. Filbanen vil bli skrevet ut i konsollen for referanse.

Igjen, husk å bruke riktig feilhåndtering og se etter nullverdier når du arbeider med filer og bilder.