6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Flutter】image_picker 簡単導入ガイド

Posted at

はじめに

本記事では、Flutterアプリにカメラによる写真撮影機能を導入しましたので、その導入ガイド記事となります。

image_picker 選定背景

Flutterでは、カメラ機能を実現するためのパッケージはいくつかあります。例えば、image_picker以外ですと、camera、photo_manager などです。
そこで、私が image_picker を選択した背景は、以下のようなことを検討した結果です。

まず、camera パッケージはめちゃくちゃ強力で、カメラの細かい制御が可能なようですが、設定がちょっと複雑になってきそうです。初心者には少しハードルが高いかもしれないと考えました。
一方で、photo_manager は、大量の画像や動画を扱うときに便利なようですが、シンプルなケースではオーバースペック感がありそうでした。

本命の image_picker は、Flutterアプリに写真の撮影やギャラリーからの選択を簡単に追加できそうでした。セットアップも簡単で、必要な機能をすぐに使える点に大きな魅力を感じました。さらに、image_picker はメンテナンスがしっかりしていて、Flutterのバージョンアップにも迅速に対応していそうでした。やはりメンテナンス性は、ストア公開するアプリにとっては非常に重要ですね。

このように、使いやすさ、柔軟性、安定性のバランスがとれてるため、image_picker を選択しました。

環境情報

参考までに、導入時の開発環境とバージョンは以下のとおりです。
・MacBook Pro M1(Ventura 13.6.3)
・Android Studio Giraffe | 2022.3.1 Patch 1
・Xcode:15.1

・Flutter:3.13.1
・image_picker:1.0.4

導入ステップ

パッケージへのリンクは以下となります。最新情報はこちらをご確認ください。

パッケージの追加

まずはパッケージをプロジェクトに追加します。

flutter pub add image_picker

AndroidとiOSの設定

AndroidとiOSで、カメラやギャラリーを使うための許可設定をします。

Android : AndroidManifest.xmlに以下を追加します。

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

iOS : Info.plist に、カメラとフォトライブラリへのアクセス理由を追加します。

<key>NSCameraUsageDescription</key>
<string>カメラを使用する理由を記述</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>フォトライブラリを使用する理由を記述</string>

※ iOSアプリを AppStore に公開する場合、上記の説明では審査でリジェクトされる可能性があります。具体的な使用理由を記載するようにしましょう。

コードの実装

カメラやギャラリーからの写真選択を実装するには、まずは、image_picker パッケージを使えるように、import文を追加します。

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

次に、写真を撮影するためのコードと、ギャラリーから写真を選択するためのコードを記述します。
写真を撮影するコード:

final ImagePicker _picker = ImagePicker();
// カメラを起動して写真を撮影
final XFile? photo = await _picker.pickImage(source: ImageSource.camera);
// ファイルを扱う処理は省略・・・

ギャラリーから選択するコード:

final ImagePicker _picker = ImagePicker();
// ギャラリーから写真を選択
final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
// ファイルを扱う処理は省略・・・

これらのコードを使えば、ユーザーがアプリで簡単に写真を撮ったり、ギャラリーから写真を選んだりできるようになり、非常に便利になること間違いなしですね。

なお、写真を撮影するのか、ギャラリーから選択するかの判定する処理については、アプリの要件に関わる部分のため、今回省略しました。ボタンによってどちらかから選択するのか、切り替える処理にするのが簡単な方法でしょう。

所感

image_picker により簡単にカメラ撮影、とギャラリー選択機能を導入することができました。本記事では省略しましたが、実際には、撮影後の画像をアプリの中でどのように扱うのか(圧縮するの?DBに保存するの?など)、事前に要件として明確にしておく必要があると感じました。導入だけなら非常に簡単ですので、一度試していただくことをお勧めします。

以上。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?