TL; DRは:質問です:私はMIMEをマップするためにC++から使用することができるクロスプラットフォームのライブラリーの拡張子をファイルにMIMEタイプのクロスプラットフォーム対応のためのライブラリおよびその逆
- 知っていますかタイプ< - >ファイル拡張子?
私のアプリケーションは、同様に、画像やビデオファイルを扱うことになっています。私はできるだけプラットフォームにとらわれないようにしようとするので、Qt4をメインライブラリとして使用することにしました。 Phononのフレームワーク(ビデオファイルを扱うため)とQImage(画像を扱うために、明らかに)はどちらもサポートするファイル形式を報告できます。 Phononは、インストールされたバックエンドによってサポートされているMIMEタイプのリストを返します。また、QImageは、サポートされているファイルフォーマットをファイル拡張子のリストで表します。
アプリケーションはQString fileName
から、VideoObject
またはImageObject
を作成するかどうかを調べる必要があります。私のアプローチは、正しいオブジェクトを作成するための適切なファクトリメソッドを返すmap<QString, FuncPtr>
を作成することです。私は現在ファイル拡張子を使用している文字列に対して、ファイル名からファイル拡張子を推測するのは非常に簡単です。しかし、私はMIMEタイプだけを知っているので、サポートされているビデオファイルタイプを登録するためのエレガントな方法はありません。
私は私のmap<QString, FuncPtr>
にキーのためのMIMEタイプを使用した場合、I a)はそのプラットフォームを行うにはどのようにMIMEタイプ(無手掛かりにファイル名をマップする方法に
- 問題に直面するだろう独立および伸張可能)
- B)
MIMEタイプにQImageのが提供するファイルの拡張子をマップし、私は今までの私の研究によると、多くの人が「Apacheのmime.typesファイル」を使用することをお勧め、ということを知っています、私は新しいファイルをサポートしてくれませんマット(WebM、WebP、...)が含まれます。
Linuxで「/etc/mime.types」をスキャンするか、Windowsで「レジストリを照会する」という方法がありません。しかし、これは2つのプラットフォーム、Mac OS Xなどについては非常に限られているようです。
上記の質問に加えて、私はどのような形や形であれ他の提案も歓迎します。おそらく私は何か脳の死者を明らかにしていません。