IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Rotation et resize d'image


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Rotation et resize d'image
    Bonjour

    Avant de faire un petit plongeon dans la reflection Geometriqe voici mon probleme

    1- Je souhaite afficher et exploiter des image dans un format standart 800 x 600 (ratio 1.3333333)

    2- Certaines image on été prise couchées je voudrais donc les retourner

    Mais sans alterer la vue
    Je vais donc combiner un Image.RotateFlip et un DrawImage de resize
    Rien de tres complexe mais si qq a un petit bout de code pour ne pas réinventer la roue, je suis preneur !!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    euh... ça veut dire quoi "un DrawImage de resize"

    Sinon je ne vois pas bien ce qui te pose problème ? Tu sais utiliser RotateFlip et DrawImage ? Il suffit de faire RotateFlip sur une copie de l'image, et de la passer en paramètre de DrawImage... ou alors j'ai pas compris la question ?

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut Tomlev

    Tu as bien compris la question
    Mais celle que je me posait etait de savoir quelle etait la maniere la plus pertinente de faire
    - Un transformMatrix
    - Un rotateflip suivi d'un resize

    Le drawimage de resize comme je l'ai noblement nommé c'est simplement le drawimage en utilisant un rectangle source et un rectangle destination pour effectuer le resize

    Voici comment j'ai résolu le probleme
    Mais si j'effectue l'operation plusieurs fois, je reduis chaque fois l'image
    Pour bien faire, je devrais conserver l'image initiale et memoriser l'operation a effectuer

    Et je pourrais aussi remplacer 1.333333f par un calcul de ratio effectif


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        private void Rot(RotateFlipType rotateFlipType)
        {
          int oWidth = img.Width;
          int oHeight = img.Height;
          Bitmap tmp = new Bitmap(oWidth, oHeight);
          float m = oWidth - ((float)oHeight / 1.333333f);
          int marge = (int)m / 2;
     
          img.RotateFlip(rotateFlipType);
          Rectangle srcRect = new Rectangle(0, 0, img.Width, img.Height);
          Rectangle dstRect = new Rectangle(marge, 0, oWidth - (int)m, oHeight);
          Graphics gr = Graphics.FromImage(tmp);
          GraphicsUnit units = GraphicsUnit.Pixel;
          gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
          gr.Clear(Color.WhiteSmoke);
          gr.DrawImage(img, dstRect, srcRect, units);
          img = tmp;
          putImage();
        }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    pour ne pas redimensionner l'image à chaque fois, tu peux en faire une copie et modifier la copie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image copy = img.Clone() as Image;

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Tomlev

    Ca j'y avais déja pensé mais c'est pas si simple

    Si je fis deux rotation de 90°, cela fait en réalité une rotation de 180 ° ou deux flip basé sur l'image originale

    Donc le probleme c'est de gerer proprement la situation courrante par rapport a la situation originale !

Discussions similaires

  1. Resizer une image
    Par skyangel dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/02/2008, 22h44
  2. [Traitement d'image] Comment "Resizer" une image
    Par sperron dans le forum Webdesign & Ergonomie
    Réponses: 5
    Dernier message: 19/12/2007, 14h37
  3. resizer une image de fond en fonction de la resolution
    Par the_edge dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 02/11/2006, 14h47
  4. resizer une image de fond en fonction de la resolution
    Par kitten13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/09/2006, 14h21
  5. Comment améliorer la rotation à 45° d'une image dans un PictureBox
    Par ProgElecT dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 22/07/2006, 01h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo