Inspiration

SIGMAのカメラのRawデータフォーマットであるx3fファイルを一覧するMacアプリを作ります。

What it does

SIGMAのカメラのRawデータフォーマットのx3fは特殊なため、直接Photoshopなどで読み込むことができません。 SIGMAが公式で提供している現像ソフトSIGMA Photo Proで読み込みTIFFやJpegに書き出すことができますが、かなり動作が重かったり使い勝手が悪いので、できれば使いたくありません。

幸い、x3fファイルをdngに変換するプログラムを公開しているプロジェクトがあります。

https://github.com/Kalpanika/x3f

変換操作をGUIで行えるx3f_wrapperというプロジェクトも用意されていますが、画像を見ながら変換したいファイルを選択することができません。変換処理もバックグラウンドで行ってくれないため、これもまた使い勝手の問題があります。

将来的には、x3fの画像を確認しながら選択しdngへ変換することのできるアプリを作りたいですが、今日の時間ではまずx3f内にJpegで保存されているサムネイル画像をリスト表示できるところまで進めたいと思います。

How I built it

まずはKalpanika/x3fのリポジトリをforkしました。コードはC言語です。

x3fファイルにはサムネイル画像の表示用にJpegデータも含まれています。これを読み込めば簡単に画像が表示できます。

x3fからサムネイル画像を取得するのに必要な最低限のC言語のコードを、SwiftベースのXcodeプロジェクトにインポートします。

ファイルパスを渡すとx3fのJpegデータをNSDataで取得する関数をC言語で作っておき、Swiftから呼び出せるようにしました。

それができればあとは普通のMacアプリなので、NSTableViewにファイルのリストを表示してNSImageViewに画像を表示できるようにしました。

今回追加したXcodeのプロジェクトはGithubリポジトリの中のx3f_mac_viewerのフォルダの中にあります。さらにその中のSample x3f filesというフォルダの中に、サンプルとして一つだけx3fファイルを入れてあります。(1ファイルで50MBを超えて大きいので一つのみです)

Challenges I ran into

普段SwiftもMacのCocoaアプリも書いていないので、1行1行のコードをドキュメントやネットで調べながら書かなくてはいけませんでした。数時間で最低限動く形にしたいこともあって、改善の余地の多いコードやUIになっていると思います。

Accomplishments that I'm proud of

二ヶ月くらい前からやりたいことではありましたが後回しにしていたので、手をつけられて良かったのではないかと思います。

What I learned

What's next for x3f viewer

選択したx3fファイルのdngへの変換処理と、変換処理やJpeg読み込みのバックグラウンド動作。Kalpanika/x3fのコードリーディング。

Share this project:
×

Updates