Cách cắt ảnh theo trung tâm trong Flutter - Hướng dẫn đơn giản

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.