C/Visual C - Rotar imagen. Ayuda Por favor!!!

 
Vista:

Rotar imagen. Ayuda Por favor!!!

Publicado por Karmelo (2 intervenciones) el 13/11/2001 05:30:19
Mi problema es el siguiente:
Cargo en memoria el mapa de bits de una imagen pcx, pero necesito rotarla 90 grados. ¿Sabe alguien como hacerlo?
Muchas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Rotación de una imagen PCX 90 grados

Publicado por Alejandro (913 intervenciones) el 22/10/2024 20:21:37
Para rotar una imagen PCX 90 grados, necesitas manipular los datos de píxeles de la imagen. A continuación, te proporcionaré un enfoque básico para hacerlo en C++. Este ejemplo asume que ya tienes el mapa de bits cargado en memoria.

Pasos para rotar la imagen



1. Cargar la imagen: Asegúrate de que ya tienes la imagen PCX cargada en un arreglo de píxeles.
2. Crear un nuevo arreglo: Necesitarás un nuevo arreglo para almacenar la imagen rotada.
3. Copiar los píxeles: Copia los píxeles del arreglo original al nuevo arreglo en la posición correcta para la rotación.

Ejemplo de código



Aquí tienes un ejemplo básico de cómo rotar una imagen PCX 90 grados en sentido horario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <vector>
 
using namespace std;
 
// Supongamos que la imagen original es de tamaño width x height
void rotateImage90DegreesClockwise(const vector<vector<int>>& original, vector<vector<int>>& rotated) {
    int width = original[0].size();
    int height = original.size();
 
    // Rotar 90 grados en sentido horario
    for (int i = 0; i < height; ++i) {
        for (int j = 0; j < width; ++j) {
            rotated[j][height - 1 - i] = original[i][j];
        }
    }
}
 
int main() {
    // Ejemplo de imagen original (2x3)
    vector<vector<int>> original = {
        {1, 2, 3},
        {4, 5, 6}
    };
 
    // La imagen rotada tendrá dimensiones 3x2
    vector<vector<int>> rotated(3, vector<int>(2));
 
    rotateImage90DegreesClockwise(original, rotated);
 
    // Imprimir la imagen rotada
    for (const auto& row : rotated) {
        for (int pixel : row) {
            cout << pixel << " ";
        }
        cout << endl;
    }
 
    return 0;
}

Explicación del código



1. Definición de la función: La función `rotateImage90DegreesClockwise` toma la imagen original y un arreglo para la imagen rotada.
2. Dimensiones: Se obtienen las dimensiones de la imagen original.
3. Rotación: Se recorre cada píxel de la imagen original y se coloca en la posición correcta en el nuevo arreglo para lograr la rotación de 90 grados.
4. Ejemplo de uso: En el `main`, se define una imagen original y se llama a la función para rotarla.

Consideraciones



- Formato de píxeles: Este ejemplo utiliza un arreglo de enteros para representar los píxeles. Asegúrate de adaptar el tipo de datos según el formato de tu imagen PCX.
- Manejo de colores: Si tu imagen tiene un formato de color específico (por ejemplo, RGB), necesitarás ajustar el tipo de datos y la forma en que se almacenan los píxeles.
- Dimensiones: Recuerda que al rotar una imagen, las dimensiones cambian. Asegúrate de que el nuevo arreglo tenga el tamaño correcto.

¡Buena suerte, Karmelo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar