あなたはバイトのみを表示するようにファイルを開いているし、イメージとしてそれを操作する必要がない場合は、それがどのようにファイルを開くの簡単なプロセスですそれ以外の場合は、Xバイト数を読み取り、それらを反復処理します。次のようなものがあります。
File.open('path/to/image.file', 'rb') do |fi|
byte_block = fi.read(1024)
byte_block.each_byte do |b|
puts b.asc
end
end
これは単にバイトを10進数で出力します。あなたはバイト値を見て、色を決定するためにRGB値を構築したいので、each_slice(3)
を使用し、3バイトの倍数で読むことが役に立ちます。
さまざまなイメージフォーマットには、タイプに応じて、キャプチャデバイスのイメージ、データフォーマット、およびEXIF情報に関する情報を保存するために使用される異なるヘッダーブロックとトレーリングブロックが含まれています。ファイルを読み込み、バイトを直接出力する場合(非圧縮TIFFなど)は、圧縮されていないものを使用するとよいでしょう。一度それを決めたら、ファイルにジャンプしてヘッダーをスキップするか、単にヘッダーを読んだり読んだりすることができます。 WikipediaのImage file formatsページは、利用可能なさまざまなフォーマットに関する詳細情報を得る良いジャンプ先です。
画像データのみを表示したい場合は、ハイレベルライブラリの1つが、画像の特定のセクションを取得するためのインタフェースを持っているので便利です。しかし、実際にバイトにアクセスすることは難しくないし、ジャンプすることもありません。
EXIFブロックについて詳しく知りたい場合は、多くの異なるベンダーのJpegおよびTIFF形式を記述するために使用されます。ExifToolは便利です。 Perlで書かれているので、コードの仕組みを見ることができます。ドキュメントではヘッダーブロックとフィールドがうまく表示され、アプリを使用して値を読み書きできます。
私は新しいルータをテストしているので、そのコードをテストする機会はありませんでしたが、それは近いはずです。それがうまくいかない場合、私はちょっと調べて答えを更新します。
好奇心が強い。この場合のRmagickのパフォーマンスはどうですか?私は、ルビーのフロントエンドを利用する趣味としてゲームエンジンで作業し、ビルトインのビットマップクラスは、ピクセルごとのアクセスに関して非常に遅いです。 –
オリジナルの質問は、著者がRMagickを見て、それが「過剰なもの」であると判断したと述べています。 – Phrogz
@Phogzだからあなたはdownvote? OPはそれが過労であると判断したとしても、そのことを意味するものではありません。もし彼らが本当に必要なものを知っていれば、彼らは尋ねなかったでしょう。この回答は正しいものであり、何が尋ねられますか。 – Alex