現在、私はコードをbase64の文字列としてlocalyに保存しています。 cordova-plugin-fileをファイルとして保存する方が良いか速いかは誰にも分かりますか?または、オフラインサポート用に画像を保存する方が良い方法はありますか?そのトピックのアドバイスや経験はありますか?ありがとうございますオフラインサポートのための画像をコードバに保存する
答えて
画像の使い方とパフォーマンスの重要性によって異なります。
自分のCordovaベースのアプリでは、オフラインで使用するためのマップタイルイメージをダウンロードし、HTML5キャンバスを使用して表示します。 私の場合、地図のピンチズーイング/パンニングが円滑に行われるようにするには、パフォーマンスが重要です。
私の解決策では、(cordova-plugin-file directories参照)にイメージを含むジップをダウンロードするのにcordova-plugin-file-transferを使用します。その後、cordova-plugin-zipを使用してcordova.file.dataDirectory
に解凍します。私のアプリは、new Image()
オブジェクトをJavascriptで作成し、src
属性を画像のローカルパスにcordova.file.dataDirectory
の範囲で設定することで、ファイルから画像データを読み込みます。私はHTML5 Canvas drawImage()
functionを使って画像データをキャンバスにコピーします。 このプロセスのパフォーマンスは非常に効率的で、AndroidおよびiOSデバイスで地図タイルをスムーズにパン/ズームできます。
しかし、iOS版のWKWebViewでfile://
プロトコルのサポートの欠如に、私は、iOS上で私のアプリケーション(私のためになしcordova-plugin-wkwebview-engine
)のためのUIWebViewを使用し続けることを余儀なくしています。 WKWebViewプラグイン(つまりhttp://localhost:8080/path/to/myimage.png
)にバンドルされているローカルWebサーバー経由で画像を読み取る、cordova-plugin-file
経由で配列バッファーとして画像を読み取る、cordova-plugin-file
で画像をベース64として読み取るなど、WKWebViewのいくつかの回避策を試しましたが、地図が使用不可能になるまでポイントに従わない。
私の疑問は、SQLite DBから画像データを保存して取り出すというテクニックも、パフォーマンスが悪いということです。バイナリデータのブロブを保存することは、SQLデータベースが設計されたものではありません。 しかし、パフォーマンスはあまり問題ではない場合がありますので、解決策で十分です。
- 1. 画像/画像を保存するためのGAEとS3
- 2. アンドロイドアプリのmysql DBに画像を保存するためのベストオプション?
- 3. ウェブサーバーにプライベート画像を保存するためのベストプラクティス
- 4. SqliteDatabaseで画像を保存するためのオプション
- 5. Rails 3&paperclip - 画像を保存するためのパス
- 6. データと画像を保存するためのベストプラクティス
- 7. 画像を保存するためのベストプラクティス
- 8. 画像のパスを保存したデータベースの画像を表示
- 9. 次の起動のためにUIViewを保存する(画像ではない)
- 10. Google App Engineに画像を保存するためのデザインの選択
- 11. 保存画像
- 12. 保存画像
- 13. 保存画像
- 14. 保存画像
- 15. モバイル開発のための画像の保存方法
- 16. iOS 4のUIViewコンテンツを実際の画像サイズで保存する(つまり、保存するためのスケールコンテンツ)
- 17. 画像を取り込んでから画像を保存した後に画像を保存
- 18. ギャラリーに画像を保存
- 19. 画像をレルムデータベースに保存
- 20. mysqlに画像を保存
- 21. ギャラリーに画像を保存
- 22. 画像をコアデータに保存
- 23. 画像をデータベースに保存
- 24. サーバーに画像を保存
- 25. ヘッダーに画像を保存
- 26. ファイルシステムに画像を保存
- 27. はjQueryの私はクリックで画像を保存するために留意クリック
- 28. HDFSに画像ファイル(jpeg、png)を保存するための入力フォーマット
- 29. ライブラリに保存するための録画ビデオURLを後で保存する
- 30. アップロードされた画像を保存するためのDicom Webビューア
ありがとうございます。私は、オフラインで使用するためのマプタファイルも保存しています。アプリケーションは、WMTSからmaptilesをダウンロードして、cordova androidとiosをサポートするcordova-sqlite-extプラグインを介してslite dbにタイルを格納します。 マップクライアントの「tileLoadFunction」を修正しました。これは、リクエストがWMTSに送信される前に、そのタイルがオフラインで利用可能かどうかをチェックします。これは静かなperfomant動作し、私は特定の時間の後にタイルをリフレッシュするために必要な情報を私に与えるタイムスタンプのような各タイルにいくつかの追加プロパティを追加/格納することができます。 – MaJe
これまでのマップ(パン/ズーム)のパフォーマンスは良いですし、古いタイルをリフレッシュする可能性が私の場合には必要です。私のマプタイルのオフラインストレージについては、sqlite-pluginを使用しますが、他のすべてのイメージでは、ファイルプラグインを試します – MaJe