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.