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 :

Inverser largeur hauteur


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 52
    Points
    52
    Par défaut Inverser largeur hauteur
    Bonjour

    J'ai besoin ouvrir un bitmap pour lui faire une rotation de 90° et l'enregistrer dans un autre

    J'ai fait mon algo pour la rotation des données mais j'ai un probleme quand je veux mettre dans l’entête la largeur du fichier d'origine dans le nouveau et vice versa, le fichier devient endommagé

    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
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <math.h>
     
    typedef struct {
    	long bfSize;
    	short bfReserved1;
    	short bfReserved2;
    	long bfoffBits;
    } HEAD;
     
    typedef struct {
    	long biSize;
    	long biWidth;
    	long biHeight;
    	short biPlanes;
    	short biBitCount;
    	long biCompress;
    	long biSizeImage;
    	long biXPelsPerMeter;
    	long biYPelsPerMeter;
    	long biClrUsed;
    	long biClrImportant;
    } INFO;
     
     
    int  main (void)
    {
    	char received_file[]="C:/KMP_WT/PrintTest.bmp";
    	char treated_file[]="C:/KMP_WT/PrintTest_treated.bmp";
    	FILE *rf = fopen(received_file, "rb");
    	FILE *tf= fopen(treated_file,"w+");
    	HEAD head;
     
    	fseek(rf, 0, SEEK_END);
    	unsigned long size = ftell(rf);
    	fseek(rf, 0, SEEK_SET);
     
    	unsigned char *bitbuffer;
    	bitbuffer=(unsigned char*) malloc (sizeof(char)*size);
    	fread (bitbuffer,1,size,rf);
     
    	short bit[8];
    	int i;
    	char eureka;
     
    	fseek(rf, 2, 0);
     
            fread(&head, 1, sizeof(HEAD), rf);
    	fseek(rf, 14, 0);
     
           INFO info_rf,info_tf;
           fread(&info_rf, 1, sizeof(INFO), rf);
     
    	printf("bmpWidth %d\n", info_rf.biWidth);
            printf("bmpHeight %d\n", info_rf.biHeight);
            printf("biBitCount %d\n", info_rf.biBitCount);
            printf("biSizeImage %d\n", info_rf.biSizeImage);
    	info_tf=info_rf;
    	info_tf.biHeight=info_rf.biWidth;
    	info_tf.biWidth=info_rf.biHeight;
     
    	printf("bmpWidth %d\n", info_tf.biWidth);
            printf("bmpHeight %d\n", info_tf.biHeight);
            printf("biBitCount %d\n", info_tf.biBitCount);
            printf("biSizeImage %d\n", info_tf.biSizeImage);
     
    	fwrite("BM", 1,2,tf);
    	fwrite(&head,1,sizeof(HEAD),tf);
    	fwrite(&info_tf,1,sizeof(INFO),tf);
    	fwrite("",1,8,tf);
    	for(i=62;i<size;i++)
    		fprintf(tf, "%c", bitbuffer[i]);
    }
    Et si je remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite(&info_tf,1,sizeof(INFO),tf);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite(&info_rf,1,sizeof(INFO),tf);
    je n'ai aucun souci mais bon je n'ai pas l'inversion de largeur hauteur.

    Merci

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    J'ai l'impression qu'il manque pas mal d'infos dans le header de ton Bitmap, regarde un peu sur internet comment c'est code (la par exemple).

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/08/2009, 16h59
  2. Réponses: 0
    Dernier message: 18/08/2009, 15h59
  3. Largeur, hauteur, overflow
    Par sebaaas dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 10/07/2009, 19h56
  4. Réponses: 2
    Dernier message: 06/06/2006, 13h59

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