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

Linux Discussion :

code source bitmap to jpeg


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Par défaut code source bitmap to jpeg
    bonjour,

    je suis actuellement sur un projet de compression et diffusion video,
    j'aimerai trouver un code source du codec bitmaptojpeg.
    je suis en language C, sur un noyau 2.6.24. j'utilise kate comme editeur.
    merci.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    AS-tu fais des recherches par toi-même sur le net ? Si oui, qu'as-tu trouvé ? Qu'est-ce qui te pose problème exactement ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre Expert
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Par défaut
    Vous pouvez jeter un oeil sur les sources de la librairie LibJpeg (version 6b ici)

    Vous pourrez par ailleurs l'utiliser pour encoder/décoder des images JPG.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Par défaut jpeg to bitmap
    alors oui j'ai fait des recherche, et je me perd très facilement...je ne trouve pas du tout ce qu'il me faut.

    alors, j'utilise la libjpeg, et voila ce que j'ai deja fait :
    ///executable utilisant les fonction jpeg de la lib, detaille de convjpeg plus bas.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "Libvideo.h"
    #include "Libvideonext.h"
    #include <signal.h>
    #include <X11/Xlib.h>
    #include "Libvideo.c"
    #include <X11/extensions/xf86dga.h>
    #include <X11/Xutil.h>
    //#include"RGBtoBMP.c"
    #include <time.h>
    #include "jpeg.h"
    #include"jpeg.c"
    void acquisition();

    VideoDev video;


    int main (int argc,char*argv[])
    {
    int i;
    T_VideoDim vid_dim;
    T_XParam paramsX;
    vid_dim.x=vid_dim.y=0;
    vid_dim.width=384;
    vid_dim.height=288;

    paramsX.dpyname=(char *)malloc(strlen(":0.0")*sizeof(char));
    sprintf(paramsX.dpyname,":0.0");


    if(InitialisationVideo(0,SHM_MODE,vid_dim,paramsX,&video)==VIDEO_KO)
    {

    printf("erreur d'initialisation\n");
    return VIDEO_KO;

    }
    acquisition();

    return VIDEO_OK;
    }
    void acquisition()
    {
    FILE* file;
    int width,height,depth,lenght;
    char fic[15];
    unsigned char * buffer;

    buffer=GrabVideo(&video,&width,&height,&depth);
    if(buffer!=NULL)
    {
    convjpeg(buffer,288,384,1,"imageout.jpeg");
    }
    else
    printf("erreur grabbing\n");

    CloseVideo(&video);
    exit(0);

    }



    #include <stdio.h>
    #include "jpeglib.h"
    #include <setjmp.h>

    void convjpeg(char * image_buffer,int image_height,int image_width,int quality,char*filename)
    {
    struct jpeg_compress_struct cinfo;
    struct jpeg_error_mgr jerr;
    FILE * outfile; /* target file */
    JSAMPROW row_pointer[1]; /* pointer to JSAMPLE row[s] */
    int row_stride;

    cinfo.err = jpeg_std_error(&jerr);
    jpeg_create_compress(&cinfo);

    if ((outfile = fopen(filename, "wb")) == NULL) {
    fprintf(stderr, "can't open %s\n", filename);
    exit(1);
    }
    jpeg_stdio_dest(&cinfo, outfile);

    cinfo.image_width = image_width; /* image width and height, in pixels */
    cinfo.image_height = image_height;
    cinfo.input_components = 3; /* # of color components per pixel */
    cinfo.in_color_space = JCS_RGB;
    jpeg_set_defaults(&cinfo);

    jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */);

    jpeg_start_compress(&cinfo, TRUE);

    row_stride = image_width * 3;

    while (cinfo.next_scanline < cinfo.image_height) {
    /* jpeg_write_scanlines expects an array of pointers to scanlines.
    * Here the array is only one element long, but you could pass
    * more than one scanline at a time if that's more convenient.
    */
    row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride];
    (void) jpeg_write_scanlines(&cinfo, row_pointer,1);

    jpeg_finish_compress(&cinfo);

    fclose(outfile);

    jpeg_destroy_compress(&cinfo);

    }

    }

    a la compilation je n'ai aucune erreur, je passe en parametre un buffer contenant les bit en RGB obtenut avec un grabing, je le renvoie dans la fonction convjpeg, mais un message d'erreur aparait quand j'execute le prog.

    "Application transfered too few scanlines"



    je ne sait pas a quoi cela correspond, parce ke avec ce buffer j'arrive a le convertir en image bitmap et l'enregistrer dans un fichier lisible correctement.

    aidez moi plz.

  5. #5
    Membre Expert
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Par défaut
    Cette erreur se produit lorsque l'appel à jpeg_finish_compress est fait alors qu'il n'y a pas eu suffisamment de scanlines transmises via jpeg_write_scanlines : il faut transmettre le nombre de scanlines correspondant à la valeur de l'attribut image_height de la structure jpeg_compress_struct.

    PS : j'ai juste survolé le code (merci d'utiliser la balise code et de bien indenter à l'avenir).

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 170
    Par défaut
    Tout d'abord merci de votre attention a mon égart.

    j'ai cru comprendre que les scanlines était le nombre de ligne de l'image,( si je me trompe, reprenner moi ).
    Donc d'après votre réponse, mon erreur est du au faite que dans jpeg_write_scanlines, le derniere parametre n'est pas "1", mais image_height.

    Avec ce parametre, une erreur de segmentation apparait.

    suis je sur la bonne route ????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (void) jpeg_write_scanlines(&cinfo, row_pointer,1); // faux
    (void) jpeg_write_scanlines(&cinfo, row_pointer,image_height); // est ce bon ???

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

Discussions similaires

  1. code source jpeg sous matlab
    Par cerise16 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 02/05/2010, 17h51
  2. Code source de l'algorithme de compression jpeg
    Par hfayman dans le forum VHDL
    Réponses: 1
    Dernier message: 26/03/2008, 10h20
  3. Code source de l'algorithme de compression jpeg
    Par hfayman dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 26/03/2008, 10h20
  4. Réponses: 3
    Dernier message: 11/11/2005, 17h15
  5. [VB6] Code source pour modifier MsgBox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 25/02/2003, 15h13

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