Image.memory は画像のバイトデータを変換して表示することができます
![[Flutter] Image.memory 画像のバイトデータを表示する 1x1.trans - [Flutter] Image.memory 画像のバイトデータを表示する](https://akira-watson.com/wp-content/themes/simplicity2/images/1x1.trans.gif)
Image.memory
Image.memory を使って画像を表示させる手順として
ネット上、assetsあるいは何らかの画像データを
Unit8Listに変換
Image.memory でUnit8Listから画像を作成
縦横サイズをきめ、BoxFit.cover でアスペクト比を保持してWidget一杯に展開して表示させます
この例ではBase64のデータから画像表示させます
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						// Base64エンコードされた画像データ String base64data =      '''/9j/4AAQSkZJRgABAQEBkAGQAAD/     ...     AAXDDnJD9O87yfo/oGTJgV/R/QNZJMP8/wD/2Q=='''; // base64Decode: Base64からUint8Listに変換 Uint8List bytes = base64Decode(base64data); Image.memory(   bytes,   width: 439,   height: 660,   fit: BoxFit.cover,// アスペクト比を変えずにWidget内にいっぱいに展開 );  | 
					
Flutterでの画像表示方法はいくつかあります
- Image.asset
- アプリ内のassetsに画像を置きそこから読み出して表示
 
 - Image.network
- Net上のURLから取得して表示
 
 - Image.file
- デバイス内の写真や画像ファイルを表示
 
 - Image.memory
- バイトストリーム、例えばBase64でエンコードされた画像を表示する
 
 
また、Imageクラスには特定の目的がないデフォルトのコンストラクタとしてImage.newがあります
これは明示的にコンストラクタを呼び出したい場合でほとんどのケースでは直接使われることはないようです
- Image.new
- Image.newはImageクラスのデフォルトコンストラクタ
 - ImageProvider
- 異なるソースからの画像を取得するための統一されたインターフェースの役割
 
 
 
Base64エンコードデータ
例えばサイズが 439×660 の画像 img_2.jpg で試してみましょう
![[Flutter] Image.memory 画像のバイトデータを表示する 1x1.trans - [Flutter] Image.memory 画像のバイトデータを表示する](https://akira-watson.com/wp-content/themes/simplicity2/images/1x1.trans.gif)
これをネットにあるツールなどでBase64に変換します
ダウンロード:img_2_base64
サンプルコード
Base64のデータは膨大なので省略しています
main.dart
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48  | 
						import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'dart:convert'; void main() {   runApp(const MyApp()); } class MyApp extends StatelessWidget {   const MyApp({super.key});   @override   Widget build(BuildContext context) {     return  MaterialApp(       home: Scaffold(         appBar: AppBar(           title: const Text('Image.memory'),         ),         body: const Center(           child: Base64decode(),         ),       ),     );   } } class Base64decode extends StatelessWidget {     const Base64decode({super.key});   @override   Widget build(BuildContext context) {     // Base64エンコードされた画像データ     String base64data =      '''/9j/4AAQSkZJRgABAQEBkAGQAAD/     ...     AAXDDnJD9O87yfo/oGTJgV/R/QNZJMP8/wD/2Q==''';     // Base64からUint8Listに変換     Uint8List bytes = base64Decode(base64data);     return Image.memory(       bytes,       width: 439,       height: 660,       fit: BoxFit.cover,// アスペクト比を変えずにWidget内にいっぱいに展開     );   } }  | 
					
実行結果
Androidエミュレータで実行
![[Flutter] Image.memory 画像のバイトデータを表示する 1x1.trans - [Flutter] Image.memory 画像のバイトデータを表示する](https://akira-watson.com/wp-content/themes/simplicity2/images/1x1.trans.gif)
 
関連記事:
- Image.asset で画像を表示する
 - Image.network でネット上の画像を表示する
 - image_picker 画像を読み出す
 - image_picker カメラ撮影
 - Image.memory 画像のバイトデータを表示する
 
References:
Image.memory
image class