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 :

Résolution d'un JPEG en DPI


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Par défaut Résolution d'un JPEG en DPI
    Bonjour à tous,

    Je travaille sous wxWidgets et il n'existe pas de moyen de récupérer la résolution d'une image jpeg en DPI. J'en ai besoin pour un petit logiciel de calcul de distances sur cartes de rando.

    J'ai bien regardé le format des fichiers jpeg mais avec les entêtes de chunk et les méta-données je n'y comprends pas grand chose.

    Quelqu'un aurait-il une idée ou une classe toute faite à proposer ?

    Merci

    JP

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Les fichiers jpeg ne donnent rien sur la résolution en DPI, seulement des données filtrées.
    La résolution en DPI s'obtient selon l'OS , la résolution écran, selon la taille matérielle en inches ( "pouces") de l'écran.
    Tout cela s'obtient selon des services de l'OS.
    Sous Windows il faut passer par GetSystemMetrics et autres


    Citation Envoyé par jvpic
    J'en ai besoin pour un petit logiciel de calcul de distances sur cartes de rando.
    JP
    S'il y a quelque chose à voir ou essayer je suis interessé...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Par défaut
    Salut mat.M
    Citation Envoyé par mat.M
    S'il y a quelque chose à voir ou essayer je suis interessé...
    A force de bidouiller j'ai trouvé la solution dans la norme jpeg file format et grâce à un lecteur binaire :

    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
    20
    21
    22
    23
     
    #include <iostream>
    #include <fstream>
    using namespace std;
     
     
    int main()
    {
        unsigned char unt, frt, fbl;  // 8 bits
        int iUnit, iX;
     
        ifstream f("cal.jpg", ios::binary);
        if (f.is_open())
        {
            f.seekg(13, ios::beg);
            f >> unt >> frt >> fbl;
            int iUnit = int(unt);      // donne les unités (1: inch, 2: cm)
            int iX = int(frt) * 256 + int(fbl);  // pas très élégant mais ça marche
            f.close();
            cout << "Unité: " << iUnit << " xDens: " << iX;
        }
    	return 0;
    }
    Notons que si l'on veut être complet on fait la même chose pour les deux octets suivants qui donnent la yDens si on craint une résolution différente selon les deux axes.

    Bon code

    JP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résolution écran en dpi
    Par lenoil dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/12/2009, 13h22
  2. [ImageMagick] Changer le DPI d'un JPEG
    Par sami_c dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/07/2007, 11h48
  3. Générer des JPEG à haute résolution (300 dpi)
    Par Leishmaniose dans le forum Powerpoint
    Réponses: 5
    Dernier message: 20/06/2007, 17h32
  4. Obtenir la "bonne" résolution d'un écran en dpi
    Par geoffroy890 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 23/03/2007, 14h19
  5. Résolution en dpi
    Par lenoil dans le forum Windows
    Réponses: 4
    Dernier message: 14/12/2006, 16h52

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