数値からバイナリ形式の画像を作る方法とは?

このQ&Aのポイント
  • プログラミング初心者の方が数値からバイナリ形式の画像を作りたい場合、C++を使用することが一般的です。
  • バイナリ形式の画像を作るためには、数値が入っている配列を用意し、それをバイナリファイルに書き込む必要があります。
  • 配列の数値をバイナリファイルに書き込む際には、ofstreamを使用し、バイナリモードでファイルを開いて、write関数を使用します。
回答を見る
  • ベストアンサー

数値から画像を作りたい

プログラミング初心者です。 C言語の入門書はとりあえず勉強しました、現在はC++をさわっています。 数値が入っている配列 image[180][180] の値を使ってバイナリ形式の画像を作りたい と考えています。調べてみると下のような書き方をしています ofstream ofs("out.bin", ios::binary); ofs.write(reinterpret_cast<char *>(&a), sizeof(a)); この書き方をすると1ピクセルの値が書き込めるのでしょうか?それぞれの数値の間には ”,”のようなものを入れなくていいのでしょうか?改行はどうすればいいのでしょうか? ヘッダー部分が必要なのでしょうか? 一番簡単に配列の数字からバイナリ形式の画像を作る方法を教えていただきたいです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • uyama33
  • ベストアンサー率30% (137/450)
回答No.3

たとえば、こんなサイトが参考になるかも。 http://www.geocities.co.jp/Playtown-Knight/6845/sd_doc/format_windib.html 他にも、似たようなサイトがありますので探してみてください。

その他の回答 (2)

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

「画像を作りたい」というのは「画像ファイルを作りたい」ということですか? もしそうなら、画像ファイルにはJPEGだとかBMPだとかTIFFだとかその他色々あるので、フォーマットの調査をしなければならないと思いますけど。

回答No.1

「バイナリ形式の画像」ってなんですか?

MONYMON12
質問者

補足

変なことを言っているかもしれませんが・・・ ImageJというソフトを使ってテキストで 「1,2,3,2,1 1,3,4,3,1 3,4,5,4,3 1,3,4,3,1 1,2,3,2,1」 のように書かれている数字から、その値に合った色を付け画像化することはできたのですが C言語でいうrb wbという形で扱える形に変えるにはどうしたらいいのでしょうか?

関連するQ&A

  • バイナリ形式でデータの入出力をしたい

    STLやstringが規格化されていない時代の古いC++の本しか持っていない私の唯一の教科書はマイクロソフトのライブラリだけなのですが時々どこに必要な事項が載っているか探しきれないことがあります その1つとして バイナリデータを読み出したり書きこんだりするにはどうするかということです バイナリファイルinfile.exeの読み出のためのファイルとの接続として ifstream ifs; ifs.open("infile.exe",ios::in|ios::binary); としバイナリファイルoutfile.exeの読み出しのためのファイルとの接続として ofstream ofs; ofs.open("outfile.exe",ios::out|ios::binary|ios::trunc); としましたがこれは正しいやり方なのでしょうか? もし不備があれば指摘してください とくにファイル名の次のモードについて指摘していただければ幸いです (なかでもios::truncが心配)

  • C++のファイルに対する配列データの読み書き

    C++で配列c[0],c[1],....の値をファイルに出力すると、 1.2 3.2 5.1 8.2 -9.1 のようになると思います(この例は配列のサイズが5)。実際は100以上の配列にします。 プログラム的にはだいたい下のようになると思っています。 std::ofstream ofs( "test.txt" ); ofs << ここで並びの出力をするはず? << std::endl; 意味は、出力ファイルの定義とストリームによる書き出し?と改行だと思います。 並びの出力ですから、ループでよいのでしょうか。プログラム作法が分からないので教えて頂きたいのですが。データの区切りは空白で、できれば書く数値のフォーマットは揃えたいですが。 次に、読み込むときはどうなるでしょうか。 std::ifstream ifs( "test.txt" ); std::string str; ifs >> str; std::cout << str << std::endl; これだと読んだデータを画面表示して終わりです。配列に読み込む方法なのですが。 よろしくお願いします。

  • バイナリデータの操作

    Perlでバイナリデータの操作(たとえば画像のピクセル部分の変更)をする場合 配列に一つ一つ数値を入れて操作するのと スカラでデータをいっぺんにパック(?)して操作するのとでは どちらがいいのでしょうか? ようはC言語のchar配列の操作のようなことがしたいのですが。

    • ベストアンサー
    • Perl
  • strcpyについて

    strcpyでコピーしたものを配列に入れていきたいのですが、やってみると 「'=' : 'char *' から 'char' に変換することはできません。この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。」とエラーが出ました。 strcpyでコピーしたものを配列に入れることはできないのですか?

  • 画像処理

    jpeg画像をPPM形式に変換して、ひらいて読むとP6(フルカラー、バイナリ)になっていました。これをRGBごとに配列を作りたのですがどうすればいいでしょうか?教えて下さい。

  • 画像処理の仕方

    C++を使ってモノクロのビットマップの画像の各ピクセルの輝度を数値化してテキスト形式で出力る物を作りたいと思っているんですが、ビットマップに対してどう処理してやればいいか分りません。誰か教えてください。

  • 2値画像の一致度判定プログラム教えてください。

    2枚の画像データ(白黒2値画像、ファイル形式は何でもよい、サイズ同じ)を読み込みピクセル単位で比較して、それらの画像がどのくらい一致しているかを数値で判断するサンプルコードをC言語でどなたか教えてください。お願いします。 例えば、次のような2枚の画像があったとします。 画像A       画像B ■□■□■□   □■□■□■ □■□■□■   ■□■□■□ ■□■□■□   □■□■□■ □■□■□■   ■□■□■□ 実行結果「画像Aと画像Bは0%一致しています。」

  • C言語のキャスト

    キーボード操作で見たい画像を切り替えるというプログラムを作成しようとしているのですがエラーが起きてしまい出来ません。 例えば、キーボードで「a」と押せばAの画像が出るように文字列にAの画像のファイル名を代入して画像を表示させようと思ったのですが、 const char [2]' から 'char' に変換できません。 この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 というエラーが出てきます。 キャストという言葉は聞いたことがあるのですが、よくわかりません。 だれか教えてください。お願いします。

  • 空白を含む文をファイルに書き込んで10文字ずつ読み出す

    空白を含む文を10文字ずつ読み出そうとしています。でも 文1:I am a poor programmer. 文2:2nd Sentence 結果:2nd Sentenr programmer. となります。"I am a poo"が欲しいのですが。 800文字以内にするためにmainだけにしました。後で補足できます。 int main() { sentence sntc; fstream file; file.open("SENTENCE.TXT", ios::app | ios::out | ios::in | ios::binary ); sntc.getData(); file.write( reinterpret_cast<char*>(&sntc), sizeof(sntc) ); file.seekg(0, ios::end); int endposition = file.tellg(); int n = endposition / sizeof(sentence); cout << "\nThere are " << n << " sentences in file"; cout << "\nEnter sentence number: "; cin >> n; int position = (n-1) * sizeof(sentence); file.seekg(position); file.read( reinterpret_cast<char*>(&sntc), sizeof(sntc) ); sntc.showData(); cout << endl; file.seekg(position, ios::cur); file.read( reinterpret_cast<char*>(&sntc), 10); sntc.showData(); cout << endl; return 0; }

  • 書籍"BINARY HACKS"に関する技術的な質問

    書籍"BINARY HACKS"に関する技術的な質問 オライリージャパンから出版されていますBINARY HACKSに関して技術的な質問があります。 バイナリファイルをダンプするコマンド"od"の具体的使用例として17ページに、適当なバイナリファイルをC言語の配列に変換するというスクリプトが書かれています。 このスクリプトを実際のC言語で使用する際に、どんなC言語を書いたらいいのでしょうか。 「標準入力からバイナリファイルを読み取って、標準出力に変換した配列を出力する」というようなことが書籍に書かれていますが、このスクリプトをC言語内で呼び出して、配列を取得するまでの流れをC言語でどう書くのか教えていただきたいです。 宜しくお願いします。

専門家に質問してみよう