Journal Manipulation d'images (bis)

Posté par  (site web personnel) .
Étiquettes : aucune
0
31
jan.
2005
Bonjour à tous,

J'ai longuement hésité avant de posté ceci comme journal ... Je m'excuse si vous trouvez qu'il n'est pas approprié ...


Suite à ce journal (http://linuxfr.org/~ElVirolo/14220.html(...)) où je vous demandais conseil sur le choix d'un langage de programmation pour la manipulation d'images. Grâce à vos (nombreuses) réponses éclairées, je me suis (re)plongé dans le Python pendant quelque temps ... pour ensuite décider que ce langage ne répond pas vraiment à mes attentes (pour ce projet-ci, attention)...

C'est alors par hasard que je suis tombé sur FreePascal [1], un formidable EDI libre pour Pascal en mode texte. J'ai été fort surpris lorsque je me suis aperçu que tous mes anciens programmes composés pour Turbo Pascal 7.0 sous DOS se recompilaient sans problème sous FreePascal!

J'ai poursuivi mes recherches, et je suis tombé sur encore mieux : Lazarus [2], un EDI cette fois graphique (et tout aussi libre) pour FreePascal... C'est un outil on ne peut plus impressionnant, semblable à Kylix/Delphi mais distribué sous licence GPL ...

C'est à partir de ce moment que je me suis replongé avec grand plaisir dans le Pascal, dont j'ai retrouvé la puissance, l'élégance et la simplicité ... Bien que je ne possède que des bases dans ce langage, la découverte d'un compilateur libre aussi performant que FreePascal me donne envie d'aller plus loin...

Il faut de plus noter que FreePascal s'intègre parfaitement à Kdevelop, ce qui est un vrai bonheur.

Il me faut maintenant revenir à mon projet : pensez-vous que Pascal soit adapté à la manipulation d'images (mes besoins sont toutefois assez sommaires dans ce domaine, simplement trifouiller les valeurs RGB des pixels), ce qui m'arrangerait bien ?

J'ai vu que libpng venait avec FreePascal... Pourquoi ne pas l'utiliser ? Il est vrai que cela limite l'utilisation du programme (seulement avec des images PNG) mais puisque c'est un format libre...

J'ai essayé un Uses libpng; mais on me répond que l'unité libpng est introuvable (pourtant elle est bien là!).


Merci d'avance pour votre aide,

Alex.



[1]http://www.freepascal.org/(...)
[2]http://www.lazarus.freepascal.org/(...)
  • # Même en m'étant relu trois fois ...

    Posté par  (site web personnel) . Évalué à 2.

    ... les fautes subsistent !

    s/posté/poster
  • # curiosité

    Posté par  (site web personnel) . Évalué à 2.

    par curiosité, pourquoi tu dis que le python ne réponds pas à tes attentes pour ce projet bien précis ?!?

    c'est pas pour troller, c'est juste de la curiosité
    car je ne vois pas où ça pourrait pêcher en python ...
    • [^] # Re: curiosité

      Posté par  (site web personnel) . Évalué à 2.

      vitesse peut-être ?
      • [^] # Re: curiosité

        Posté par  (site web personnel) . Évalué à 1.

        Non, ce n'est pas une question de vitesse, je n'en suis pas encore là ... J'ai juste eu un peu de mal avec la PIL (je n'ai pas trouvé de doc à ma portée)... Et puis, je l'avoue le "pour ce projet-ci" était un peu là pour éviter les trolls... Même si je trouve le python globalement agréable, je ne le trouve pas très lisible, et je trouve la manipulation des tuples etc... pas assez proche des tableaux du C... Tout ceci est tout à fait subjectif, et correspond à mon propre parcours, pas besoin de se lancer dans une interminable discussion...


        Alex.
        • [^] # Re: curiosité

          Posté par  (site web personnel) . Évalué à 2.

          tu m'étonnes que les tuples ne sont pas proches des tableaux en C ;-)

          en python, il y a 3 objets de bases qui peuvent un peu s'apparenter aux tableaux ... je vais faire simple
          - les lists : ["a","b","c"]
          c'est une liste ! on peut ajouter des elements, en enlever
          et les index: t[0] == "a"
          - les tuples : ("a","b","c")
          c'est comme une liste, mais c'est fermé ! on peu ni rajouter, ni
          enlever ... on les index pareils t[0] = "a"
          - les dicos : { 1:"a", 2:"b", 3:"c", 7:"d"}
          c'est un hashtable(key/value) ! on peut ajouter/enlever des elements
          et on index aussi t[0] == "a"

          les tuples sont moins utilisés, mais pratique par exemple pour stocker un coordonné x,y ... a = (10,20) ... ou pour un retour de fonction de plusieurs éléments ... (comme ces des objets où on est pas censé ajouter/enlever des éléments)

          python devrait largement couvrir tous tes besoins ... si PIL te convient pas, il y a des bindings sur d'autres libs (imagemagick et autres) mais PIL est très très bien ... et très puissante
      • [^] # Re: curiosité

        Posté par  (site web personnel) . Évalué à 2.

        ;-)

        troll ?

        tu serai surpris de la vitesse de python ... rien à envier à java ou dot.net
        dans certains cas, le binaire issu de C est plus rapide ... mais on s'y rapproche de plus en plus ... (ils bossent beaucoup sur l'optimisation)

        si problème de vitesse il y avait vraiment ... ce ne serait qu'une question de temps ... ;-)
        on attends toujours le compilateur starkiller de py -> binaire, ou le pypy : réimplémentation de python en python ...

        d'ici "peu de temps" ; ce "viel argument" infondé sera définitivement révolu ;-)

        regarde les progrès du parser cElementTree de python, ces derniers jours, il dépasse haut la main msxml, libxml2(déjà très rapide) ou les parsers java ... en vitesse et en ressources ... tout en étant pythonique (en profitant de toutes les merveilleuses facultés du langage python)
        • [^] # Re: curiosité

          Posté par  (site web personnel) . Évalué à 1.

          Du python compilé n'est plus du python parcque tu perds la portabilité (ca marche que sur x86), donc Python reste lent lorsqu'on l'utilise dans son utilisation standard.
          CQFD.
          • [^] # Re: curiosité

            Posté par  (site web personnel) . Évalué à 2.

            Pour l'instant, tu ne peux pas encore compilé (générer un binaire/executable) (à moins que tu ai des infos ? ;-) ... mais quand ce sera possible tu pourras très certainement le compiler sur diverses palteformes (autres que x86), et ça viendra alors taquiner les vitesses des autres binaires ...

            Dans la classe des langages avec bytecode/VM, python n'a rien à envier à java ou dot.net en terme de rapidité ... tout en étant plus que portable (python est la langage (de haut niveau) qui possède le plus de plateformes, j'ai une liste qqpart) ...

            Bref, je ne comprends pas ce que tu veux dire, et vu ton cv ... tu devrais un peu taquiner le python ;-)
            • [^] # Re: curiosité

              Posté par  (site web personnel) . Évalué à 2.

              Je pensais que tu parlais de projet commme Psyco.
              Et c'est justement parcque sans Psyco (qui ne marche que sur x86) Python n'est pas du tout comparable avec .NET ou Java que je ne comprend pas du tout comme tu peux affirmer qu'il n'a rien à envier en terme de rapidité... En l'état actuel où Java et .NET utilisent un JIT, Python est plus lent (sans Psycho puisque Psycho n'est pas portable et dénature donc le langage)
              Bon évidemment on pourrait parler de IronPython ;-)
  • # bibliotheque

    Posté par  . Évalué à 3.

    A peu pres tous les langages sont bien pour faire des manipulations d'images. C'est couteux en temps, mais il suffit de se baser sur une bonne bibliotheque ecrite en C.

    * En Python, tu as PIL:
    http://www.pythonware.com/products/pil/(...)
    * Autrement ImageMagick qui a des bindings vers plein de langages, incluant Ruby:
    http://www.imagemagick.org/(...)
    * Java a sa propre API de traitement d'images
    http://java.sun.com/products/java-media/jai/(...)
    * etc...

    Bref, il y en a pour tous les gouts, il suffit de trouver la bonne bibliotheque. Maintenant si ces bibliotheques ne te suffisent pas, que tu veux implementer tes propres algos (mais visiblement ce n'est pas ton cas) alors il vaut mieux passer par un langage permettant d'atteindre un niveau plus bas, comme le C ou le C++.

    Par contre, en attaquant directement la libpng, tu risques de te compliquer la vie pour rien.

    Enfin bon, tout ca a deja ete plus ou moins dit a ton journal precedent.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.