簡體   English   中英

將多圖像選擇器與圖像裁剪器一起使用

[英]Use Multi Image Picker with Image Cropper

我正在使用 Multi_Image_Picker 插件來獲取多個圖像。 Multi_Image_Picker 在選擇多個圖像時返回一個List<Asset>文件。 我如何能夠將 Multi_Image_Picker 與只接受圖像路徑的 Image_Cropper 一起使用? 由於它是資產類型,因此我無法獲取圖像的路徑。 這是我為實現它所做的嘗試:

我可以得到圖像的路徑:

final filePath = await FlutterAbsolutePath.getAbsolutePath(assets.identifier);

這可行,但是flutter_absolute_path插件需要最小的android sdk為19。是否有另一個可以在不將資產文件轉換為圖像文件的情況下裁剪圖像?

我嘗試將資產轉換為圖像文件:

List<File> images = List<File>();
Directory tempDir = await getTemporaryDirectory();
final path =tempDir.path;
for (int i = 0; i < assets.length; i++) {
   images.add(await ProcessImage.assetToFile(
     path: "$path/images/img$i",
      data: await assets[i].getByteData(quality: 90)));
}

資產文件():

static Future<File> assetToFile({ByteData data, String path})async {
return File(path).writeAsBytes(
      data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}

感謝@pskink 的回答。 事實證明,您必須將獲得的資產字節數據作為文件保存到臨時文件夾中,並在您的裁剪器中使用它。

final temp = await Directory.systemTemp.createTemp();
List<File> images = List<File>();
 for (int i = 0; i < assets.length; i++) {
    final data = await assets[i].getByteData();
    images.add(await File('${temp.path}/img$i').writeAsBytes(
      data.buffer.asUint8List(
        data.offsetInBytes, data.lengthInBytes)));
}

您可以在下面的 Github 存儲庫中找到三個包組合的一個很好的示例:

  • multi_image_picker
  • image_cropper
  • 濾光片

https://github.com/flutterstudygn/multiple_image_selector

主要特征

  • 選擇多個圖像。
  • 在網格視圖中拍照。
  • 限制用戶可以選擇的最大圖像數量。
  • 調整每個圖像的裁剪。
  • 調整每個圖像的過濾器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM