exec method

Future<Uint8List> exec(
  1. {required XFile photo}
)

Implementation

Future<Uint8List> exec({
  required XFile photo,
}) async {
  try {
    final photoData = await photo.readAsBytes();

    if (kDebugMode) {
      print('Imageに変換開始');
      print(DateTime.now());
    }

    /// 処理が重いため、computeで別スレッドで実行する
    final image = await compute(decodeImage, photoData);

    if (image == null) {
      throw ServiceException(
        ServiceErrorType.invalidImageFormat,
        ServiceErrorType.invalidImageFormat.message,
      );
    }

    if (kDebugMode) {
      print('Imageに変換終了');
      print(DateTime.now());
    }
    final clopedImage = await compute(_clopedImageWrapper, image);

    if (kDebugMode) {
      print('Imageクロップ終了');
      print(DateTime.now());
    }

    final clopedPngData = await compute(encodeJpg, clopedImage);

    if (kDebugMode) {
      print('Png変換終了');
      print(DateTime.now());
    }

    return clopedPngData;
  } catch (error) {
    throw ServiceException(
      ServiceErrorType.imageConvertError,
      ServiceErrorType.imageConvertError.message,
    );
  }
}