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 :

générer des images


Sujet :

C

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut générer des images
    Bonjour. Je voudrai savoir comment peut on faire pour faire des images au format TIFF par exemple en utilisant un algorithme qui remplit une matrice élément par élément et en choisissant la résolution de l'image de sortie comme la taille de la matrice.

    Je sais déjà que les images sont codées sur 24 bits par exemple (8 bits par couleur) et que l'intensité de chaque couleur dépend de la valeur du char qui lui est assigné, mais je ne sais pas trop quoi choisir pour faire un programme pas trop compliqué dans la gestion du type de fichier, car ce n'est pas forcément évident (la gestion du type de fichier).

    Je voudrai savoir aussi par exemple quelle est la différence entre un image bitmap (.bmp) une image TIFF, une image png, mais je ne veux utiliser qu'un seul type de fichier.

    En fait ça n'a pas trop d'importance du moment que j'arrive à faire de belles figures avec qui ne tiennent pas trop de place.

  2. #2
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Le plus simple est d'utiliser une librairie exterieure qui va gérer à ta place
    le soucis du format de fichier TIFF.

    Par exemple il y a ImageMagick, qui fourni une librairie de base avec une interface de programmation différente selon le langage utilisé (C, C++, ...).

    De plus tu pourras facilement faire de la conversion d'images entre différents formats, du traitement d'image, etc.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    et il y a aussi drectement la lib tiff ...

    http://www.libtiff.org/


  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour Kromartien,

    Si tu veux directement tracer des traits, des points, des cercles(...) dans une image, tu peux le faire avec la librairie X11. X11/Xlib.h te permet par exemple de tracer des éléments, de les remplir avec des couleurs un peu comme sous paint directement dans une fenêtre graphique ouverte à l'exécution du programme. X11/Xaw/Command.h te permet d'écire sur une fenêtre virtuelle (Pixmap) et d'enregistrer cette fenêtre dans un fichier bitmap. Ce fichier Bitmap n'est souvent pas très lisible directement (dépend du logiciel de lecture...) mais tu peux très facilement le convertir en un autre format de fichier avec l'instruction 'convert Picture.bmp Picture.tif' par exemple si tu travailles sous linux ou sous cygwin...
    Finalement, si tu traces des points sur une fenêtre, ça revient un peu à imprimer une matrice dans un fichier image. J'espère que c'était ce que tu cherchais et je t'envoie un exemple de programme que tu peux tester :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    #include <stdio.h>
    #include <X11/Xaw/Command.h>
     
    #define N 10
    typedef struct {  double X; 
                      double Y; } COORDINATES;
     
     
     
    #define NIL (0)
     
    void PLOT_CURVE(double F[N] , double X[N],
     
                    COORDINATES Min, COORDINATES Max  )
     
    {  //---------PLOT EDGES IN A BITMAP PICTURE-------//
     
       Display *dpy;
     
       int Width = 400;            //Width  of picture in pixels
     
       int Height= 400;            //Height of picture in pixels
       Pixmap Edge_pix;
       GC Edge_gc;
       dpy = XOpenDisplay(NIL);
       Edge_pix = XCreatePixmap (dpy, RootWindowOfScreen (DefaultScreenOfDisplay (dpy)), Width, Height, 1);
       int White = BlackPixel (dpy, DefaultScreen (dpy)); //This is strange but there is an inversion of colours
       int Black = WhitePixel (dpy, DefaultScreen (dpy));
       Edge_gc = XCreateGC (dpy, Edge_pix, 0, 0);
       XSetForeground(dpy, Edge_gc, White);
       XFillRectangle (dpy, Edge_pix, Edge_gc, 0, 0, Width-1, Height-1);
       XSetForeground(dpy, Edge_gc, Black);
     
     
     
       //PLOTING EDGE POINTS ON PIXMAP
     
       #include <string.h>
     
       char buffer[5];
     
       int i, Xi, Yi;
     
       for(i = 0; i<N; i++)  
     
       {  sprintf(buffer, "%d", i);
     
          Xi = (int)(        (X[i]-Min.X)/(Max.X-Min.X)*Width );
          Yi = (int)( Height-(F[i]-Min.Y)/(Max.Y-Min.Y)*Height);
     
          XDrawString(dpy, Edge_pix, Edge_gc, Xi, Yi, buffer, strlen(buffer) );
     
          XDrawPoint (dpy, Edge_pix, Edge_gc, Xi, Yi );
     
       }
     
     
     
       //WE WRITE A PICTURE YOU CAN CONVERT IN GIF WITH: convert Edges.bmp Edges.gif
     
       XWriteBitmapFile (dpy, "Picture.bmp", Edge_pix, Width, Height, -1, -1);
       XFreePixmap(dpy, Edge_pix);
     
    }
     
     
    int main()
    {  double F[N], X[N];
       COORDINATES Min, Max; //Extremum points to plot
       int i;
       for(i=0; i<N; i++)
       {  F[i]=(double)(i*i);
          X[i]=(double)i;
       }
       Min.X = 0; Max.X = N;
       Min.Y = 0; Max.Y = N*N;
       PLOT_CURVE(F, X, Min, Max);
       printf("Picture.bmp has been created\n");
       return 0;
    }
    Tu peux compiler ce code avec la commande 'gcc main.c -o Main -L/usr/X11R6/lib -L/usr/X11/lib -lX11' si ton programme s'appelle main.c et que tes librairies sont bien situées dans ces répertoires...

    Dans tous les cas, tu devras faire appel à une librairie extérieure. Ce n'est peut-être pas le meilleur moyen pour écrire dans une image mais tu peux quand même arriver à faire des choses intéressantes (tracé 3D...) à partir des fonctions élémentaires de Xlib : XDrawLine, XDrawCircle...

    Bon courage et bon week end,
    Salutations,
    Eric

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Oupss, j'ai oublié :

    Ce programme écrit la fonction f(x)=x² pour x=0,1,..,9 dans un fichier bitmap qui s'appelle 'Picture.bmp'.
    Tu convertis ensuite ton fichier bitmap en ce que tu veux.

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

Discussions similaires

  1. Générer des images
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/10/2015, 17h16
  2. [Imaging] Détourner WPF pour générer des images
    Par Raphael77222 dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 13/05/2009, 15h51
  3. Générer des images dynamique en php
    Par Dosix dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2009, 19h06
  4. Problème avec rrd4j et générer des images
    Par chouaiebnabil dans le forum Graphisme
    Réponses: 1
    Dernier message: 02/03/2009, 13h26
  5. [FLASH MX2004] Générer des images
    Par sami_c dans le forum Flash
    Réponses: 2
    Dernier message: 09/01/2006, 11h05

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