Flutter 壓縮圖像的最佳方式

      網友投稿 1164 2025-04-01

      引言


      作為開發者的我們,經常會做一些上傳圖片和和保存圖片啦的功能,但是由于一些圖片非常大,我們在上傳或者保存的時候會占用大量的網絡資源和本地資源,那么我們需要做的就是對圖片進行壓縮。

      昨天在寫如何接入微信分享的時候用到一個知識點,就是圖片壓縮

      當時我用了flutter_image_compress

      可能大家都知道Dart 已經有圖片壓縮庫了。為什么要使用原生?

      還不是因為他的效率問題,

      所以今天就和大家來說一說它的具體用法吧。

      1.flutter_image_compress

      安裝

      dependencies: flutter_image_compress: ^1.0.0-nullsafety

      使用的地方導入

      import 'package:flutter_image_compress/flutter_image_compress.dart';

      Flutter 壓縮圖像的最佳方式

      /// 圖片壓縮 File -> Uint8List Future testCompressFile(File file) async { var result = await FlutterImageCompress.compressWithFile( file.absolute.path, minWidth: 2300, minHeight: 1500, quality: 94, rotate: 90, ); print(file.lengthSync()); print(result.length); return result; } /// 圖片壓縮 File -> File Future testCompressAndGetFile(File file, String targetPath) async { var result = await FlutterImageCompress.compressAndGetFile( file.absolute.path, targetPath, quality: 88, rotate: 180, ); print(file.lengthSync()); print(result.lengthSync()); return result; } /// 圖片壓縮 Asset -> Uint8List Future testCompressAsset(String assetName) async { var list = await FlutterImageCompress.compressAssetImage( assetName, minHeight: 1920, minWidth: 1080, quality: 96, rotate: 180, ); return list; } /// 圖片壓縮 Uint8List -> Uint8List Future testComporessList(Uint8List list) async { var result = await FlutterImageCompress.compressWithList( list, minHeight: 1920, minWidth: 1080, quality: 96, rotate: 135, ); print(list.length); print(result.length); return result; }

      還有另外兩種方式

      2.使用 image_picker 包的 imageQuality 參數

      圖像選擇器

      3.使用 flutter_native_image 包

      flutter_native_image

      安裝

      flutter_native_image: ^0.0.6

      文檔地址

      https://pub.flutter-io.cn/packages/flutter_native_image

      用法

      Future compressFile(File file) async{ File compressedFile = await FlutterNativeImage.compressImage(file.path, quality: 5,); return compressedFile; }

      關于如何計算所選文件的圖像大小的嗎?

      您可以以字節為單位獲取文件長度,并以千字節或兆字節等計算。

      像這樣:file.readAsBytesSync().lengthInBytes -> 文件大小以字節為單位的文件大小

      (file.readAsBytesSync().lengthInBytes) / 1024 -> 文件大小以千字節為單位的文件大小

      (file.readAsBytesSync().lengthInBytes) / 1024 / 1024 -> 文件大小以兆字節為單位

      總結

      今天的文章介紹了圖片壓縮的三種用法,分別對應三個不同的庫,大家可以去實踐,來對比一下那個庫的性能更好。

      好的,我是堅果,公眾號有更多精彩內容,期待你的發現.

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel表格中通過設置單元格格式將數字變成中文大寫數字金額
      下一篇:Fastdfs介紹部署
      相關文章
      日韩国产精品亚洲а∨天堂免| 亚洲网站在线观看| 亚洲AV无码一区二区乱孑伦AS| 亚洲成a人片在线观看国产| 亚洲熟妇久久精品| 亚洲一区在线观看视频| 亚洲成a人片在线观看中文app| 亚洲一区二区三区首页| 久久亚洲AV成人无码电影| 亚洲成人在线网站| 精品日韩亚洲AV无码 | 亚洲AV无码久久寂寞少妇| 国产av无码专区亚洲av桃花庵| 亚洲精品无码成人AAA片| 国产亚洲综合一区柠檬导航| 日韩va亚洲va欧洲va国产| 亚洲av无码精品网站| 99亚洲精品高清一二区| 亚洲成人一级电影| 中文有码亚洲制服av片| 亚洲Av无码国产一区二区| 国产天堂亚洲精品| 亚洲色欲久久久久综合网| 亚洲色婷婷综合久久| 亚洲AV永久无码精品水牛影视| 亚洲av女电影网| 亚洲理论片在线中文字幕| 亚洲精品亚洲人成在线播放| 亚洲色欲色欲www在线播放 | 亚洲AV无码一区二区乱子伦| 久久av无码专区亚洲av桃花岛| 666精品国产精品亚洲| 亚洲三级视频在线观看| 亚洲人成人网站18禁| 男人的天堂av亚洲一区2区| 亚洲精品国产va在线观看蜜芽| 亚洲中文字幕久久精品无码喷水| 亚洲成a人片在线观看无码| 777亚洲精品乱码久久久久久 | 亚洲区视频在线观看| 亚洲精品国产综合久久久久紧|