以前紹介した「react-native-image-picker」ライブラリを使ってアルバムやカメラで撮影した画像をアップロードする前に、アプリ側でリサイズする機能を実装したので備忘録としてまとめ。
プロフィール画像の表示が遅いのを改善する際、そう言えばアップロードしている画像ってオリジナルサイズのままでは…?と思ったので追加しました。
使用したライブラリは「react-native-image-resizer」です。
GitHub のページはこちら。
GitHub – bamlab/react-native-image-resizer: 🗻 Resize local images with React Native
react-native-image-resizer
まずライブラリのインストールを行うため、下記を実行します。
npm install react-native-image-resizer --save npx pod-install // iOS アプリの場合は実行
インストールが完了したら、まず下記をインポートします。
import ImageResizer from 'react-native-image-resizer';
あとは、リサイズを行いたいタイミングで、下記を実行すればOKです。
必要なのは、元画像の URI です。
ImageResizer.createResizedImage([画像のURI], 1000, 1000, 'JPEG', 80, 0) .then(response => { console.log(response.uri) // リサイズ後に実行したい処理を記述 }) .catch(error => { console.log(error); });
成功したら、then()
が呼び出されるので、この中で画像アップロードなど、リサイズ後に実行したい処理を記述してください。
画像 URI 以外の引数についての説明を簡単にして行きます。
まず 1000
が指定されている 第 2、第 3引数は、maxWidth
と maxHeight
で、画像の最大の横幅と高さです。
画像をリサイズする場合、これを超えないようにリサイズしてくれるようです。
第 4引数は compressFormat
で、これは Android 限定のオプションです。
こちらはリサイズ後の画像形式のはずです。私は JPEG
にしました。
第 5引数は quality
で画像の質です。
0~100
の間で指定できたので、私はちょっとだけ下げています。
最後が rotation
で、画像を回転する角度です。
なお、iOSでは、この角度は 90度の倍数に制限されているらしく、自動で丸められるとのこと。
…画像の回転を行わない場合は、0
を指定しておけばOKです!
他にもオプションはありましたが、最低限これだけ指定しておけば大丈夫でした。
詳しくは、上の GitHub のページをご参照ください。
開発中のアプリのプロフィール画像の表示遅延がこれで解消されればいいのですが…しばらく様子を見たいと思います。
以上、React Native の「react-native-image-resizer」ライブラリを使って画像をリサイズする方法でした。
ご参考になれば幸いです。