เพิ่มคำสั่งการนำเข้าที่จำเป็นสำหรับ image
แพ็คเกจ:
import 'dart:io';
import 'package:image/image.dart' as img;
import 'package:path_provider/path_provider.dart';
สร้างฟังก์ชั่นครอบตัดและบันทึกภาพตรงกลาง:
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');
}
เรียกใช้ฟังก์ชันด้วยเส้นทางไฟล์รูปภาพ ความกว้างของการครอบตัด ความสูงของการครอบตัด และชื่อไฟล์ที่ต้องการ:
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);
}
ตรวจสอบให้แน่ใจว่าได้แทนที่ 'image_path.png'
ด้วยเส้นทางจริงไปยังไฟล์รูปภาพของคุณ โค้ดจะอ่านรูปภาพ คำนวณตำแหน่งกึ่งกลาง สร้างกรอบครอบตัดรอบๆ แล้วครอบตัดรูปภาพโดยใช้แพ็กเก image
จ ภาพที่ครอบตัดจะถูกบันทึกเป็นไฟล์ภาพ PNG ใหม่พร้อมชื่อไฟล์ที่กำหนดเองในไดเร็กทอรีเอกสารของแอปพลิเคชัน เส้นทางของไฟล์จะถูกพิมพ์ในคอนโซลเพื่อเป็นข้อมูลอ้างอิงของคุณ
อย่าลืมใช้การจัดการข้อผิดพลาดที่เหมาะสมและตรวจสอบค่า Null เมื่อทำงานกับไฟล์และรูปภาพ