首頁 > 軟體

Flutter簡潔實用的圖片編輯器的實現

2022-02-10 19:00:38

介紹

一款簡潔實用的圖片編輯器,純dart開發。支援:塗鴉、旋轉&翻轉、馬賽克、新增文字,及自定義ui風格。

功能演示

塗鴉

旋轉&翻轉

馬賽克

新增文字及刪除

安裝

新增依賴

dependencies:
  image_editor_dove: ^latest

import

import 'package:image_editor/flutter_image_editor.dart';

使用方法

獲取到原圖片後,將其傳給ImageEditor 如下:

  Future<void> toImageEditor(File origin) async {
    return Navigator.push(context, MaterialPageRoute(builder: (context) {
      return ImageEditor(
        originImage: origin,
        //可空,支援自定義儲存位置(編輯後的圖片)
        savePath: customDirectory
      );
    })).then((result) {
      if (result is EditorImageResult) {
        setState(() {
          _image = result.newFile;
        });
      }
    }).catchError((er) {
      debugPrint(er);
    });
  }

返回結果

///The editor's result.
class EditorImageResult {
  ///寬度
  final int imgWidth;

  ///高度
  final int imgHeight;

  ///編輯後的圖片
  final File newFile;

  EditorImageResult(this.imgWidth, this.imgHeight, this.newFile);
}

拓展

UI客製化

一些按鈕、滾軸等widget支援自定義,可通過繼承ImageEditorDelegate來自定義ui風格:

class YourUiDelegate extends ImageEditorDelegate{
    ...
}

ImageEditor.uiDelegate = YourUiDelegate();

class ImageEditor extends StatefulWidget {

  const ImageEditor({Key? key, required this.originImage, this.savePath}) : super(key: key);
   
   ...
    
  ///[uiDelegate] is determine the editor's ui style.
  ///You can extends [ImageEditorDelegate] and custome it by youself.
  static ImageEditorDelegate uiDelegate = DefaultImageEditorDelegate();

  @override
  State<StatefulWidget> createState() {
    return ImageEditorState();
  }
}

保持相對繪製路徑

為了獲得更大的繪製區域,所以繪製面積並非為圖片顯示區域,這也就導致了旋轉的時候,相對位置會有變化。如果你需要保持相對,可以控制繪製區域與圖片顯示區域保持一致即可。

參考及其他文章

地址

github倉庫地址: image_editor_dove

外掛地址:image_editor_dove

參考外掛

signature | Flutter Package (flutter-io.cn)

到此這篇關於Flutter簡潔實用的圖片編輯器的實現的文章就介紹到這了,更多相關Flutter 圖片編輯器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com