vector<Imagen> dividir (const Imagen &img, int n, int m) { vector<Imagen> resultado; int cols = img.ancho() / n; int filas = img.alto() / m; int i = 0; while(i < img.alto()) { int j = 0; while(j < img.ancho()) { Imagen esta_imagen(filas, cols); int i_img = 0; while (i_img < filas) { int j_img = 0; while(j_img < cols) { Pixel este_pixel = img.obtenerPixel(i + i_img, j + j_img); esta_imagen.modificarPixel(i_img, j_img, este_pixel); j_img++; } i_img++; } resultado.push_back(esta_imagen); j += cols; } i += filas; } return resultado; }
void GaleriaImagenes::dividirYAgregar(const Imagen &imagen, int n, int m) { int alto = imagen.alto(); int ancho = imagen.ancho(); if (alto % m == 0 && ancho % n == 0) { vector<Imagen> dividida = dividir(imagen, n, m); int i = 0; while(i < dividida.size()) { this->agregarImagen(dividida[i]); i++; } } }
bool Imagen::operator==(const Imagen &otra) const { bool resultado = true; if(alto() != otra.alto() || ancho() != otra.ancho()) resultado = false; else { int i = 0; while (i < alto()) { int j = 0; while (j < ancho()) { Pixel p1 = pixels[i][j]; Pixel p2 = otra.obtenerPixel(i, j); if (p1.red() != p2.red() || p1.green() != p2.green() || p1.blue() != p2.blue()) resultado = false; j++; } i++; } } return resultado; }