47 char SaltarSeparadores (ifstream& f)
59 bool LeerCabecera (ifstream& f,
int& filas,
int& columnas)
63 while (SaltarSeparadores(f)==
'#')
66 f >> columnas >> filas >> maxvalor;
68 if ( f && filas>0 && filas <5000 && columnas >0 && columnas<5000) {
85 if (!LeerCabecera(f,filas,columnas)) {
95 bool LeerImagenPPM (
const char nombre[],
int& filas,
int& columnas,
unsigned char buffer[])
103 if (LeerCabecera (f, filas, columnas))
104 if (f.read(
reinterpret_cast<char *
>(buffer),filas*columnas*3))
113 bool LeerImagenPGM (
const char nombre[],
int& filas,
int& columnas,
unsigned char buffer[])
121 if (LeerCabecera (f, filas, columnas))
122 if (f.read(
reinterpret_cast<char *
>(buffer),filas*columnas))
131 bool EscribirImagenPPM (
const char nombre[],
const unsigned char datos[],
int filas,
int columnas)
138 f << columnas <<
' ' << filas << endl;
140 f.write(
reinterpret_cast<const char *
>(datos),filas*columnas*3);
147 bool EscribirImagenPGM (
const char nombre[],
const unsigned char datos[],
int filas,
int columnas)
154 f << columnas <<
' ' << filas << endl;
156 f.write(
reinterpret_cast<const char *
>(datos),filas*columnas);
bool LeerImagenPPM(const char nombre[], int &filas, int &columnas, unsigned char buffer[])
Lee una imagen de tipo PPM sobre memoria reservada.
TipoImagen LeerTipoImagen(const char nombre[], int &filas, int &columnas)
Consulta el tipo de imagen del archivo y sus dimensiones.
bool EscribirImagenPGM(const char nombre[], const unsigned char datos[], int filas, int columnas)
Escribe una imagen de tipo PGM.
bool LeerImagenPGM(const char nombre[], int &filas, int &columnas, unsigned char buffer[])
Lee una imagen de tipo PGM sobre memoria reservada.
bool EscribirImagenPPM(const char nombre[], const unsigned char datos[], int filas, int columnas)
Escribe una imagen de tipo PPM.
Fichero cabecera para la E/S de imágenes.
TipoImagen
Tipo de imagen.
@ IMG_PPM
Imagen tipo PPM.
@ IMG_DESCONOCIDO
Tipo de imagen desconocido.
@ IMG_PGM
Imagen tipo PGM.