2016-08-16 24 views
1

少し書いています。cross-platform raytracer in Swiftです。現時点では、生成されたイメージを書き出す時点で固執しています。私は、ライブラリのために今何日かを探したが、私が見つけただけ従っていました:スウィフトクロスプラットフォームを使用してpng画像を書き込む方法

  • UIImagePNGRepresentationを使用してPNGの書き込み:いいえthatsのiOS版のみ
  • lodepng - 唯一の2つのファイル(.Cからなる軽量のC libがと.h):非常に有望ですが、私の素早いプログラムとリンクしません。非常に残念です。
  • libpng:私の目的にとってはあまりにも多くのフルブローンのPNGライブラリです。

イメージ出力は、swiftで書かれた最初のレイトレーシングアルゴリズムまでの最後のブリックです。もし誰かがこれを達成する方法を知っていれば、本当に感謝しています。多分、誰かがこの問題を解決するための助けとなる助言を与えることができます。

もう1つのオプションは、libが存在するか、自分用にSwiftアルゴリズムを書くことができる非常に単純なイメージフォーマットを見つけることです。

+0

「私のSwiftプログラムとリンクしません」とはどういう意味ですか? –

+0

私はlodepngライブラリからC関数を呼び出すことができます。コンパイラには問題ありません。しかしリンク時に、リンカーはCメソッド呼び出しのシンボルを見つけることができないと不平を言う。私はまた、コンパイラが派生/中間体のフォルダに.oファイルを生成したことを確認しました。何か案は? – blackjacx

答えて

1

私は些細なフォーマットであるnetpbmを使用し、次にImageMagickやGraphicsMagickなどのサードパーティのコンバータを使用して最終形式に変換します。

netpbmライブラリを使用することも、単にピクセルを書き込むこともできます。あなたの場合は

$ cat p3.ppm 
P3 4 4 255 
    0 0 0 0 0 0 0 0 0 255 0 255 
    0 0 0 0 255 127 0 0 0 0 0 0 
    0 0 0 0 0 0 0 255 127 0 0 0 
255 0 255 0 0 0 0 0 0 0 0 0 

view of sample PPM image

フォーマットはhere

に記載されている代表的なPPMファイルは "P3" のマジックナンバーは、それがASCII形式であることを意味し、このように見えます「P6」形式のPPMファイルを書くことができます。このファイルでは、 ピクセルは生のバイトです。

$ od -c p6.ppm 
0000000 P 6 \n 4  4 \n 2 5 5 \n \0 \0 \0 \0 \0 
0000020 \0 \0 \0 \0 377 \0 377 \0 \0 \0 \0 377 177 \0 \0 \0 
0000040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 377 177 \0 \0 \0 377 
0000060 \0 377 \0 \0 \0 \0 \0 \0 \0 \0 \0 
+0

ありがとう、私はPNGのためのlib :-)を見つけるまで私はこれと一緒に行くと思います – blackjacx

+1

私はdownvoteが私は具体的にそれを迅速に行う方法を言っていないためだと仮定します。書式は非常に単純なので、 "hello world"プログラムを書くことができれば、p3.ppmを書くことができます。私はFortran、vi、echo、bash "here documents"などで記述します。ここではStackExchangeのmarkdownエディタで例を書いた後、GraphicsMagickでP6に変換しました。 –

関連する問題