compress_handler.dart 1.12 KB
import 'dart:io';

import 'package:appframe/services/dispatcher.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:path/path.dart' as path;
import 'package:path_provider/path_provider.dart';

class CompressImageHandler implements MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    String url = params['url'];
    int quality = params['quality'];
    int compressedWidth = params['compressedWidth'];
    int compressedHeight = params['compressedHeight'];

    var originFile = File(url);
    // 获取后缀名
    String ext = path.extension(url);

    final Directory tempDir = await getTemporaryDirectory();
    final String uniqueFileName = '${DateTime.now().millisecondsSinceEpoch}$ext';

    var result = await FlutterImageCompress.compressAndGetFile(
      originFile.absolute.path,
      uniqueFileName,
      quality: 88,
      rotate: 180,
    );

    return true;
  }
}

class CompressVideoHandler implements MessageHandler {
  @override
  Future handleMessage(dynamic params) {
    // TODO: implement handleMessage
    throw UnimplementedError();
  }
}