에 여러 값을 쓰기 나는 다음과 같은 코드가 있습니다 : 그것은 나를 볼 (. 그것이 옳은 일을하고있어 확인) 참고하는 값을 그대로 출력한다는 점에서는 이진 파일
#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;
}
이 좋은 작품 : 예 , 나는 그것이 우하 구석에서 시작하고 0,0까지 읽는 것을 알고있다. 그것은 여기의 의도입니다.
내가 지금 필요한 것은 그 rgb 값을 열린 파일에 쓰는 방법을 찾는 것입니다. 각 픽셀에 대해 rgb.red() * 255, rgb.green() * 255 및 rgb.blue() * 255의 값을 얻습니다. 어떻게 이들을 r, g, b (라인 당 하나의 픽셀)로 저장합니까?) 파일에?
나는 그들에게 똑같은 char casting을 할 필요가 있다고 생각하지만, 그것들을 한 줄에 연결하는 방법을 모른다. 각 file.write()는 끝에 LF를 자동으로 추가합니다.
감사합니다.
http://en.cppreference.com/w/cpp/io/basic_ostream/write –
제안을 주셔서 감사합니다. 내가 이해하지 못하는 것은 하나의 문자열 (쉼표로 구분)으로 묶어서 쓰는 방법입니다. 단일 값을 그냥 쓸 수 있습니다 (char *로 캐스팅 한 후),하지만 파일에서 한 줄로 모두 세 가지를 수행하는 방법을 잘 모르겠습니다. – KirAsh4
텍스트 파일이나 이진 파일을 쓰고 있습니까? 바이너리 인 경우 값을 쉼표로 구분해야하는 이유는 무엇입니까? –