🦒
【Flutter】Flutter で画像 URL をファイル形式に変換する
はじめに
Flutterで画像URLをファイル形式に変換する(リモートにある画像ファイルのURLからFileオブジェクトを取得する)方法を紹介します。
やり方
pubspec.yamlに以下を追加してください。
pubspec.yaml
path_provider: ^2.0.13
http: ^0.13.5
http
は、画像バイトを取得するためにURLへのAPIリクエストを呼び出すために使用されます
path_provider
は、デバイスのファイルシステム上の一時的な場所を見つけて、デバイスに画像を一時的に保存するために使用されます
使用するパッケージをインポートしてください
import 'package:http/http.dart' as http;
import 'package:path_provider/path_provider.dart';
import 'dart:io';
import 'dart:math';
任意の画像URLをファイル形式に変換する関数です
Future<File> urlToFile(String imageUrl) async {
//デバイスの一時ファイルのパスを取得します
final String tempPath = (await getTemporaryDirectory()).path;
//取得したパスにランダムなファイル名で新しいファイルを作成します
final File file = File('$tempPath${Random().nextInt(100)}.png');
//http.getメソッドを呼び出し、それにimageUrlを変換したUriを渡して応答を取得します
http.Response response = await http.get(Uri.parse(imageUrl));
//fileへhttp.getで受信したbodyBytesを書き込みます。
await file.writeAsBytes(response.bodyBytes);
//ファイルを返します
return file;
}
参考
Discussion