Обрезка и сохранение изображения в Flutter без пользовательского интерфейса

#image #flutter #crop

Вопрос:

Я хочу создать приложение, которое может обрезать изображение с определенным соотношением сторон (соотношение устройств). Но я не хочу, чтобы какой-либо пользовательский интерфейс отображал параметры обрезки.

Хорошо, вот пример,

Если пользователь нажимает на изображение из списка изображений в приложении, выбранное изображение автоматически (фоновый процесс) обрезается (соотношение устройств) и сохраняется на устройстве без отображения пользовательского интерфейса, связанного с обрезкой. Как я могу это сделать! Любая функция в dart, с помощью которой можно обрезать изображение, ничего не показывая.

введите описание изображения здесь

Комментарии:

1. вы нашли какое-либо решение, связанное с этим?

Ответ №1:

Вы можете использовать copyCrop() с изображением:

Копирование изображения (изображение src, int x, int y, int w, int h);

 import 'dart:io';
import 'package:image/image.dart';
void main(List<String> argv) {
  String path = argv[0];
  Directory dir = Directory(path);
  List files = dir.listSync();
  List<int> trimRect;
  for (var f in files) {
    if (f is! File) {
      continue;
    }
    List<int> bytes = f.readBytesSync();
    Image image = decodeImage(bytes);
    if (image == null) {
      continue;
    }
    if (trimRect == null) {
      trimRect = findTrim(image, mode: TrimMode.transparent);
    }
    Image trimmed = copyCrop(image, trimRect[0], trimRect[1], 
                             trimRect[2], trimRect[3]);
    String name = f.path.split(RegExp(r'(/|\)')).last;
    File('$path/trimmed-$name').writeBytesSync(encodeNamedImage(image, f.path));
  }
}