Thêm các import cần thiết cho gói image
:
import 'dart:io';
import 'package:image/image.dart' as img;
import 'package:path_provider/path_provider.dart';
Tạo hàm để cắt và lưu ảnh được cắt theo trung tâm:
Future<void> cropAndSaveCenteredImage(String imagePath, double cropWidth, double cropHeight, String fileName) async {
// Đọc ảnh từ đường dẫn tệp
File imageFile = File(imagePath);
List<int> imageBytes = await imageFile.readAsBytes();
img.Image image = img.decodeImage(imageBytes);
// Tính toán vị trí trung tâm để cắt ảnh
int centerX = image.width ~/ 2;
int centerY = image.height ~/ 2;
// Tính toán hình chữ nhật cắt dựa vào vị trí trung tâm
int cropX = (centerX - cropWidth ~/ 2).clamp(0, image.width);
int cropY = (centerY - cropHeight ~/ 2).clamp(0, image.height);
// Cắt ảnh
img.Image croppedImage = img.copyCrop(image, cropX, cropY, cropWidth.toInt(), cropHeight.toInt());
// Lấy thư mục tài liệu để lưu ảnh
Directory directory = await getApplicationDocumentsDirectory();
String filePath = '${directory.path}/$fileName.png';
// Lưu ảnh thành tệp
File file = File(filePath);
await file.writeAsBytes(img.encodePng(croppedImage));
// Hiển thị đường dẫn tệp
print('Ảnh đã được lưu tại: $filePath');
}
Gọi hàm với đường dẫn tệp ảnh, chiều rộng cắt, chiều cao cắt và tên tệp mong muốn:
void main() async {
// Thay 'duong_dan_anh.png' bằng đường dẫn thực tế đến tệp ảnh của bạn
String imagePath = 'duong_dan_anh.png';
// Xác định chiều rộng và chiều cao cắt mong muốn
double cropWidth = 200.0;
double cropHeight = 200.0;
// Xác định tên tệp mong muốn (không kèm đuôi mở rộng)
String fileName = 'anh_da_cat';
// Cắt và lưu ảnh đã được cắt theo trung tâm với tên tệp chỉ định
await cropAndSaveCenteredImage(imagePath, cropWidth, cropHeight, fileName);
}
Vui lòng thay 'duong_dan_anh.png'
bằng đường dẫn thực tế đến tệp ảnh của bạn. Đoạn mã sẽ đọc ảnh, tính toán vị trí trung tâm, tạo một hình chữ nhật cắt quanh nó, sau đó cắt ảnh bằng gói image
. Ảnh đã cắt sẽ được lưu như một tệp ảnh PNG mới với tên tùy chỉnh trong thư mục tài liệu của ứng dụng. Đường dẫn tệp sẽ được hiển thị trong cửa sổ console để bạn có thể tham khảo.