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

Turbo Pascal Discussion :

[TP][MULTI-PROBLEME]Comment afficher des images pcx


Sujet :

Turbo Pascal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 8
    Points
    8
    Par défaut [TP][MULTI-PROBLEME]Comment afficher des images pcx

    salut tous
    j'ai un petit probleme pour pourvoir afficher une image un turbo pascal.
    J'ai compris comment faire marcher blockread mais la seule chose que je ne comprends pas c'est avec l'algorithme : il (192 and) = 192 THEN ...
    Je pense su'il s'agit tout simplement du codage parce que quand j'enleve les conditions j'ai une sorte de fouilli de pixels. En fait je voudrais savoir comment exactement sont codées des images .bmp .pcx et si possible .jpg
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Alors pour les BMP c'est très simple mais comme je vais pas tout reexpliquer une n-ième fois, euh je répondrais qu'il faudrait chercher sur google.fr pas exemple, où il y a de très bons tutoriels. C'est la même chose pour les PCX. Par contre pour les JPEG, là c'est plus compliqué : en effet, il me semble que le codage des JPEG utilise la trigonométrie et en particulier les cosinus ( je me rappèle plus comment ça marche désolé ). Donc la doc doit se trouver sur Internet, mais je pense qu'il doit falloir être callé en maths sinon... ( moi j'ai jamais essayé et ça me tente pas... ).

    Pour information, il y a encore les unités de notre cher Haypo ( qui a quitté le navire... ) qui marchent très bien ( euh euh si on est technicien supérieur... voire ingénieur en informatique : enfin elles sont plutôt difficiles à utiliser si on a pas la même pensée qu'haypo ... )

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 8
    Points
    8
    Par défaut adresse
    y 'aurait pas ue adresse particulièrement bien?

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut codage jpeg
    en ce qui concerne le codage jpeg, il repose sur la transormation de Fourier (TF).
    C'est relativement mathematique, mais meme si ca aide, on est pas oblige de comprendre ce qu'il y a derriere.

    La transformee de Fourier est une operation pas si complexe que ca, qui est appliquee sur chaque portion d'image (celle-ci est divisee en carres de 32x32).
    On obtient des coefficients a placer devant des sinus et cosinus. Le "signal" (ici, l'image, ou plutot la TF de l'image) est la superposition (ponderee par les coef.) de tous ces sinus et cosinus. Si on ne garde que les premiers coefficients, le "signal" (l'image) n'est pas trop degrade.
    Si on applique la transformation inverse, on obtient une image qui ressemble pas mal a l'image de depart. Tout depend du nombre de coeff. qu'on garde, et c'est pour ca qu'il est possible de choisir le taux de compression des images jpeg : plus on garde de coeff., plus l'image est precise, mais moins ca compresse.
    Pour les details techniques, je ne connais pas trop le formalisme adopte, mais maintenant que tu sais ca, ca doit etre assez facile de trouver des trucs sur le net (il existe des algorithmes performants et assez simples de TF et TF inverse sur le net).

  5. #5
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    <troll>
    wormful : J'ai écrit mes unités pour moi, ou plutôt pour mes programmes. Pas dans le but de les réutiliser comme librairie :-/ Par contre j'ai p'têtre quitté le bateau, mais je suis resté accroché à une corde qui pendait derrière :-p

    Le gros défaut de mes unités graphiques : depuis mon programme Affiche, j'utilise l'unité XMS dans l'unité VESA2, et l'unité VESA2 dans toutes les librairies de chargement d'une image ... Au final, pour afficher une image BMP, il faut au moins 3 unités !
    </troll>

    Le codage PCX (de mémoire) :
    1- Lire l'entête ... voir mes unités :-)
    2- Si les bits #7 et #6 valent 0 (octet and 192 = 0), alors les bits de poids faible contiennent la couleur d'UN pixel. Sinon, les bits de poids faible contiennent le nombre de répétition, et l'octet suivant contient la couleur.

    C'est un peu bête de prendre 2 bits pour le code spécial "répétition". Ex: Le pixel 200 doit être codé {193, 200} : deux octets pour un pixel ... et c'est la même chose pour tous les pixels de couleur >= 64.

    Lien : http://www.wotsit.org/

    @+ Haypo

  6. #6
    Membre averti Avatar de charly
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 329
    Points : 358
    Points
    358
    Par défaut
    un truc beaucoup plus simple c ets l unites de hdd34 qui lit presque toutes les images , y compris les jpeg et les gif , donc , vbe et de plus une des meilleurs ( sans exagerer )
    6*8 =42

  7. #7
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Non Charly, n'en fait pas trop !

    Certes, ce sont les meilleures ! J'ai les chevilles qui gonflent !

    Pour être plus sérieux, je ne lis pas les Jpeg, car tout ce que j'avais trouvé sur le sujet... Etait horrible !

    En fait, les librairies Jpeg sont à 99% basées sur le travail du Jpeg Independant Group. En effet, celui-ci à créé du code C, adaptable à toutes les plateformes. Le codage et le décodage étant absolument fous (une vingtaine d'unités en Pascal), personne ne s'est amusé à le refaire par soi-même.

    J'ai volontairement renoncé à intégrer le Jpeg dans mes unités, car je ne pouvais intégré 20 unités en plus, rien que pour ça.

    Par contre, mon unité charge : *.bmp, *.ico, *.pcx, *.tga, *.gif, *.raw

    Les unités d'Haypo sont, peut-être, compliquées à utiliser (je ne crois pas, enfin...).
    Par contre, désolé Haypo, mais elles sont bancales. Elles ne chargent qu'une image sur 10 ! Quelle performance...

    Si tu veux mon unité, il faut me contacter. Ici : hdd34_nospam@hotmail.com, et en virant le nospam, évidemment.

    Pour répondre à la première question, en passant. Le X and 192 = 192 perrmet de la valeur d'un bit ou plusieurs bits. 192 est un masque.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 20
    Points : 8
    Points
    8
    Par défaut 2eme probleme
    J ai enfin reussi à remplacer ce que je ne comprenais pas, mais subsiste un bug : pour certaines images, il y a un décalage plus ou moins grand selon les images à la 160 eme ligne (pile poil 320/2). Je ne trouve pas l'erreur et pourtant j'ai respecté ce que disait un tutoriel sur le pcx ( expliquant q'il y avait des coeff à placer...)
    Bref voici mes lignes

    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
    uses crt;
    var x,y:integer;
        a,al:word;
        name:string;
        fichier: file;
     
    begin
        asm
          mov ax,13h
          int 10h
        end;
    name:='lunne.pcx';
    assign(fichier,name);
    reset(fichier,1);
    seek(fichier,128);
    x:=1;
    REPEAT
    blockread(fichier,a,1,al);
    if a >192 THEN
       begin
        y:=a-192;
        blockread(fichier,a,1,al);
            for x:= x to x+y do
            Mem[$a000:x] := a;
       END
       ELSE
    begin
    x:=x+1;
    Mem[$a000:x] := a;
    end;
    until (keypressed) or (al=0);
    READln;
    CLOSE(fichier);
    end.
    NOTA : désolé d'avoir crée plusieurs sujets pour un même thème, mais je me suis trompé de boutons ( je n'avais pas beaucoup de temps devant moi et je n'ai pas fait attention sur quoi je cliquais , ce qui bien evidemment ne se reproduira plus)
    je vous remercie d'avance

    d'ailleurs il semblerait que "x" ne depasse pas "32050" puisque lorsque je clos la boucle par "until x= 32051" au lieu de "al=0" le programme continue à tourner et le probleme montré plus haut se remet.

    Mikoeur

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

Discussions similaires

  1. un probleme pour afficher des images AS3
    Par Flashouilleur dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 19/01/2009, 18h28
  2. [Images] Comment afficher des images "orientées"
    Par christgh dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 13/01/2008, 16h27
  3. Comment afficher des images en .eps sans passer par un .dvi
    Par Fox213 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 7
    Dernier message: 08/06/2007, 12h18
  4. Comment afficher des images dans crystalreport
    Par rddev dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/05/2007, 02h44
  5. Réponses: 8
    Dernier message: 18/05/2006, 15h30

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