Heyy.. die Datei die ich öffnen möchte, öffnet sich leider nicht.
Hier mein Code.
Main
ppm.cpp
ppm.h
Hier mein Code.
Main
C++:
#include <iostream>
#include "ppm.h"
using namespace std;
int main() {
SImage img;
img = readPPM("lena2.ppm");
return 0;
}
ppm.cpp
C++:
#include "ppm.h"
using namespace std;
// Einlesen der Bilder
SImage readPPM(const char *const filename){
SImage image;
fstream in;
in.open(filename, ios::in);
if(!in.is_open()){
cout << "Konte Datei nicht oeffnen" << endl;
return image;}
getline(in, image.format);
if(image.format != "P6"){
cout << "ungueltiges Dateiformat!" << endl;
return image;
}
getline(in, image.comment);
in >> image.cols;
in >> image.rows;
cout << "Anzahl der Pixel: " << image.cols*image.rows << endl;
in >> image.maxValue;
// Groesse des Vektors anpassen
image.grayvalues.resize(image.cols*image.rows);
// Einlesen der Grauwerte in einer Schleife ueber alle Pixel
for(unsigned int i = 0; i < image.cols*image.rows;i++){
in >> image.grayvalues[i];
}
// Ueberpruefen der Anzahl der gelesenen Werte
if(image.cols*image.rows != image.grayvalues.size()){
cout << "Konnte nicht alle Pixel lesen" << endl;
}else{
cout << "Alle Pixel eingelesen" << endl;
}
return image;
}
//Abfrage eines Grauwertes
short getGrayval(const SImage,unsigned int r, unsigned int c);
// Setzen eines Grauwertes
void setGrayval(SImage &img, unsigned int r, unsigned int c, short val);
// Schreiben einer Bilddatei
int writePPM(const SImage image, const std::string filename);
ppm.h
C++:
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#ifndef AUFGABENBLATT2_AUFGABE1_PPM_H
#define AUFGABENBLATT2_AUFGABE1_PPM_H
#endif //AUFGABENBLATT2_AUFGABE1_PPM_H
struct SImage{
unsigned int rows; // zeilen
unsigned int cols; // spalten
unsigned maxValue; // grauWert im Bild
std::string format; // zeichenkette für dateiformat
std::string comment; // für kommentar
std::vector<short> grayvalues; // Vektor für Grauwerte des Bildes
};
// Einlesen der Bilder
SImage readPPM(const char *const filename);
//Abfrage eines Grauwertes
short getGrayval(const SImage,unsigned int r, unsigned int c);
// Setzen eines Grauwertes
void setGrayval(SImage &img, unsigned int r, unsigned int c, short val);
// Schreiben einer Bilddatei
int writePPM(const SImage image, const std::string filename);