[c#] Inverser (retourner) une image jPG
Résolu
Bonjour,
Je suis pas très douée et j'ai un exam bientot
Pouvez vous me donner le code ou une partie du code qui permettrait d'inverser ou retourner une image (photo) comme le Windows !
S'y possible pixel par pixel !
Merci d'avance de votre aide
a+
Kora,lle
Je suis pas très douée et j'ai un exam bientot
Pouvez vous me donner le code ou une partie du code qui permettrait d'inverser ou retourner une image (photo) comme le Windows !
S'y possible pixel par pixel !
Merci d'avance de votre aide
a+
Kora,lle
A voir également:
- [c#] Inverser (retourner) une image jPG
- Retourner ecran pc - Guide
- Retourner une vidéo - Guide
- Légender une image - Guide
- Image iso - Guide
- Image jpg gratuite - Guide
1 réponse
extern "C"{
#include <stdlib.h>
}
#include <cassert>
#include <iostream>
class image_t{
protected:
typdef unsigned int pixel_t;
pixel_t **data; // les valeurs des pixels
std::size_t largeur; // la largeur de l'image en nb de pixel
std::size_t hauteur; // la hauteur de l'image en nb de pixel
public:
// Constructeur par défaut
image(){}
// Constructeur
image(std::size_t hauteur0,std::size_t largeur0):
hauteur(hauteur0),largeur(largeur0)
{
data = (pixel_t **)malloc(hauteur*sizeof(pixel_t *));
for(std::size_t i=0;i<hauteur;++i)
data[i] = (pixel_t *)calloc(hauteur,sizeof(pixel_t));
}
// Destructeur
~image(){
for(std::size_t i=0;i<hauteur;++i) free(data[i]);
free(data);
}
// Accesseur hauteur
inline std::size_t get_hauteur() const{
return hauteur;
}
// Accesseur largeur
inline std::size_t get_largeur() const{
return largeur;
}
// Accesseur pixel
inline pixel_t get_pixel(std::size_t ligne,std::size_t colonne) const{
assert(ligne<hauteur);
assert(colonne<largeur);
return pixel[i][j];
}
// Accesseur pixel
inline void set_pixel(std::size_t ligne,std::size_t colonne,const pixel_t & p){
assert(ligne<hauteur);
assert(colonne<largeur);
pixel[i][j] = p;
}
// Renversement horizontal
inline image_t retournement_horizontal() const{
image_t img(hauteur,largeur);
for(std::size_t i=0;i<hauteur;++i){
for(std::size_t j=0;j<largeur;++j){
img.set_pixel(i,largeur-j,this->get_pixel(i,j));
}
}
return img;
}
// Renversement vertical
inline image_t retournement_horizontal() const{
image_t img(hauteur,largeur);
for(std::size_t i=0;i<hauteur;++i){
for(std::size_t j=0;j<largeur;++j){
img.set_pixel(hauteur-i,j,this->get_pixel(i,j));
}
}
return img;
}
// Rotation +90°
inline image_t retournement_horizontal() const{
image_t img(largeur,hauteur);
for(std::size_t i=0;i<hauteur;++i){
for(std::size_t j=0;j<largeur;++j){
img.set_pixel(j,i,this->get_pixel(i,j));
}
}
return img;
}
};
// Operateur d'affichage
template <typename Tstream>
Tstream operator << (Tstream & out,const image_t & img){
std::size_t largeur = img.get_largeur();
std::size_t hauteur = img.get_hauteur();
for(std::size_t i=0;i<hauteur;++i){
for(std::size_t j=0;j<largeur;++j){
out << img.get_pixel(i,j);
}
out << std::endl;
}
return out;
}
int main(){
image_t img(5,4);
img.set_pixel(0,0,1);
img.set_pixel(1,2,5);
img.set_pixel(2,1,4);
img.set_pixel(3,3,6);
std::cout << img << std::endl;
image_t img2 = img.retournement_horizontal();
std::cout << img2 << std::endl;
getchar(); // pour les windowsiens
return 0;
}
Enfin c'est un truc dans l'idée... Enfin je te laisse chercher