四個(gè)頭文件:
import 'dart:io';
import 'dart:typed_data';
import 'dart:convert';
import 'package:flutter_image_compress/flutter_image_compress.dart';
最后一個(gè)是壓縮庫(kù),要在pubspec.yaml導(dǎo)入:
flutter_image_compress:
圖片轉(zhuǎn)base64并壓縮,quality是圖片質(zhì)量,0-100可調(diào)整
Future imageToBase64AndCompress(File file) async {
List<int> imageBytes = await FlutterImageCompress.compressWithFile(file.absolute.path, quality: 20);
print('壓縮圖片大小:' + imageBytes.length.toString());
return base64Encode(imageBytes);
}
圖片file轉(zhuǎn)base64,不壓縮
Future imageToBase64(File file) async {
List<int> imageBytes = await file.readAsBytes();
print('圖片大小:' + imageBytes.length.toString());
return base64Encode(imageBytes);
}
base64轉(zhuǎn)圖片
Image base64ToImage(String base64Str, double width, double height) {
Uint8List bytes = Base64Decoder().convert(base64Str);
return Image.memory(bytes, fit: BoxFit.cover, width: width, height: height);
}
壓縮圖片并返回File
Future imageCompressToFile(File file) async {
print('壓縮前圖片文件大小:' + file.lengthSync().toString());
File imageFile = await FlutterImageCompress.compressAndGetFile(
file.absolute.path,
Directory.systemTemp.path + '/userava' + myuserId + '.jpg',
quality: 10,
minWidth: 200,
minHeight: 200,
);
print('壓縮后圖片文件大小:' + imageFile.lengthSync().toString());
return imageFile;
}
Directory.systemTemp.path為tmp路徑