0

次のコードがあります。

#include <Magick++.h>
#include <iostream>
#include <fstream>

using namespace Magick;
using namespace std;

unsigned short int version = 1;
unsigned short int cols, rows;
short int myCol, myRow;

int main(int argc, char **argv) {
  ofstream myFile;
  myFile.open("img001.bin", ios::out | ios::trunc | ios::binary);
  myFile.write(reinterpret_cast<const char*> (&version), sizeof(version));

  try {
    InitializeMagick(*argv);
    Image img("noname-th.jpg");
    cols = img.columns();
    rows = img.rows();
    myFile.write(reinterpret_cast <const char*> (&cols), sizeof(cols));
    myFile.write(reinterpret_cast <const char*> (&rows), sizeof(rows));

    for (myCol = cols - 1; myCol >= 0; myCol--) {
      for (myRow = rows - 1; myRow >= 0; myRow--) {
        ColorRGB rgb(img.pixelColor(myCol, myRow));
        cout << "red: "     << (rgb.red()   * 255);
        cout << ", green: " << (rgb.green() * 255);
        cout << ", blue: "  << (rgb.blue()  * 255) << endl;
      }
    }
  }
    catch ( Magick::Exception & error) {
    cerr << "Caught Magick++ exception: " << error.what() << endl;
  }
  return 0;
}

これは、私が見るために値を吐き出すという点でうまく機能します(そして、それが正しいことをしていることを確認してください)。それがここでの意図です。

今必要なのは、これらの RGB 値を開いているファイルに書き込む方法を理解することです。ピクセルごとに、rgb.red() * 255、rgb.green() * 255、および rgb.blue() * 255 から値を取得します。これらを r、g、b (1 行あたり 1 ピクセル) として保存するにはどうすればよいですか? ) ファイルに?

それらに対して同じ文字キャストを行う必要があると思いますが、それらを1行に連結する方法がわかりません。各 file.write() は、末尾に LF を自動的に追加します。

ありがとう。

4

2 に答える 2