读取 PPM 文件 RGB 值 C++
Read PPM files RGB values C++
我正在尝试从 PPM 文件中读取。
我想读取 this file 中每一行的第一个、第二个和第三个数字,但我不知道如何读取这些行。
这是我目前拥有的:
for (int y = 4; y <= HEIGHT; y++) { // i think it has to start on row 4
for (int x = 1; x <= WIDTH; x++) { // and x from 1
int i = 4;
int r = CurrentR(i);
int g = CurrentG(i);
int b = CurrentB(i);
i++;
}
}
int CurrentR(int I) {
return // the first number in row xy
}
int CurrentG(int I) {
return // the second number in row xy
}
int CurrentB(int I) {
return // the third number in row xy
}
我建议您这样做:
struct RGB {
int R,B,G;
}
std::ifstream& operator>>(std::ifstream &in,RGB& rgb){
in >> rgb.R;
in >> rgb.G;
in >> rgb.B;
return in;
}
std::ostream& operator<<(std::ostream &out,RGB& rgb){
out << rgb.R << " ";
out << rgb.G << " ";
out << rgb.B << std::endl;
return out;
}
int main(){
std::string filename = "test.txt";
std::ifstream file(filename.c_str());
if(file.is_open()) {
std::string line;
for (int i=0;i<4;i++) { std::getline(file,line); }
RGB rgb;
for (int i=0;i<LINES_TO_READ;i++) {
file >> rgb;
std::cout << rgb;
}
}
}
我正在尝试从 PPM 文件中读取。 我想读取 this file 中每一行的第一个、第二个和第三个数字,但我不知道如何读取这些行。
这是我目前拥有的:
for (int y = 4; y <= HEIGHT; y++) { // i think it has to start on row 4
for (int x = 1; x <= WIDTH; x++) { // and x from 1
int i = 4;
int r = CurrentR(i);
int g = CurrentG(i);
int b = CurrentB(i);
i++;
}
}
int CurrentR(int I) {
return // the first number in row xy
}
int CurrentG(int I) {
return // the second number in row xy
}
int CurrentB(int I) {
return // the third number in row xy
}
我建议您这样做:
struct RGB {
int R,B,G;
}
std::ifstream& operator>>(std::ifstream &in,RGB& rgb){
in >> rgb.R;
in >> rgb.G;
in >> rgb.B;
return in;
}
std::ostream& operator<<(std::ostream &out,RGB& rgb){
out << rgb.R << " ";
out << rgb.G << " ";
out << rgb.B << std::endl;
return out;
}
int main(){
std::string filename = "test.txt";
std::ifstream file(filename.c_str());
if(file.is_open()) {
std::string line;
for (int i=0;i<4;i++) { std::getline(file,line); }
RGB rgb;
for (int i=0;i<LINES_TO_READ;i++) {
file >> rgb;
std::cout << rgb;
}
}
}