[Flutter] multi_image_pickerをより汎用的に扱えるようにしたい
こちらの記事(https://coneta.jp/article/show/2948)で画像を複数選択する方法を紹介したが、このパッケージは取得したデータがAsset
というパッケージ独自のタイプで返却され、AssetThumb
というWidgetを使って表示する。
例えば取得したデータをサーバにアップロードするとか、Image Widgetとか別形式で扱いたいとなると、少し加工が必要。
import 'package:path_provider/path_provider.dart';
Future<File> getImageFileFromAssets(Asset image) async {
final byteData = await image.getByteData();
final tempFile = File('${(await getTemporaryDirectory()).path}/${image.name}');
final file = await tempFile.writeAsBytes(
byteData.buffer.asUint8List(
byteData.offsetInBytes,
byteData.lengthInBytes,
),
);
return file;
}
Asset.getByteData
で元画像のバイトデータを取得できるので、それを元にFileやImageに変換できる。
multi_image_pickerで取得したデータはデバイスのTemporaryエリアに保存されているが、これはpath_provider
のgetTemporaryDirectory()).path
を用いてpathを取得することが可能。