Flutter圖片F(xiàn)ile轉(zhuǎn)base64并壓縮

四個(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路徑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容