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++;
        }
    }
}
Beispiel #3
0
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;
}