libmagic-iosをCocoa static library frameworkにしました
1年以上前にlibmagicをiOSで動くようにしたものをGithubで公開してからずっとほったらかしにしていたのですが、勉強も兼ねてframeworkにしてみました。
前に更新してからGithubの仕様が変わってたみたいで、Githubからのバイナリの配布ができなくなったためインストール可能なframeworkはSourceForge.netに置いています。ちょっとまだSourceForge.netの使い方をちゃんと把握していないもので、主な説明はGithubのREADMEに書いています。ご利用の際はまずはGithubからご覧下さい。
Github: https://github.com/wagyu298/libmagic-ios
SourceForge: https://sourceforge.net/p/libmagic-ios/
ライセンスは修正BSDです。
libmagicが何か知らない人のための補足
libmagicとは、Unix系OSのfileコマンドのライブラリ部分です。
fileコマンドは指定されたファイルの種類を表示するコマンドです。実行例はこんな感じです。
$ file a3e68c84.jpg a3e68c84.jpg: JPEG image data
このfileコマンドのファイル分類処理部分のみ取り出したものがlibmagicになります。
上のfileコマンドと似たようなことをiOS用に書くと以下のようになります。
NSString *path = [[NSBundle mainBundle] pathForResource:@"a3e68c84" ofType:@"jpg"]; magic_t magic = magic_open(MAGIC_NONE); magic_load(magic, NULL); const char *filetype = magic_file(magic, [path fileSystemRepresentation]); NSLog(@"file type is %s", filetype); magic_close(magic);
実行すると以下のログ出力が得られます。
file type is JPEG image data
magic_open関数を呼び出す際に、MAGIC_MIMEフラグを渡すとmagic_file関数が返すテキストがMIME TYPEになります。
NSString *path = [[NSBundle mainBundle] pathForResource:@"a3e68c84" ofType:@"jpg"]; magic_t magic = magic_open(MAGIC_MIME); magic_load(magic, NULL); const char *filetype = magic_file(magic, [path fileSystemRepresentation]); NSLog(@"mime type is %s", filetype); magic_close(magic);
実行すると以下のようにMIME_TYPEが得られます。
mime type is image/jpeg; charset=binary
MAGIC_MIMEフラグの他にも色々設定できますので、詳しくはhttp://www.daemon-systems.org/man/magic_open.3.htmlとかをご覧下さい。