ImageMagick

NseaProtectorNseaProtector Membre
janvier 2010 modifié dans API AppKit #1
Bonjour,
Est-ce que quelqu'un sait comment intégrer ImageMagick ?
J'ai trouvé un exemple pour l'iPhone http://www.cloudgoessocial.net/2009/07/09/imagemagick-on-iphone-xcode/, mais pour le mac , c'est le flou !
J'aimerais l'utiliser via ObjC, pas en CLI ni avec des scripts.
J'ai l'impression que le framework de l'exemple iPhone pourrait le faire, mais je dois faire une bêtise quelque part en essayant de l'intégrer dans un projet pour mac !
Edit:
Je suis entrain d'utiliser pour la première fois macPort et de suivre la procédure indiqué sur le site d'imageMagick... Sur Macbook, c'est un peu long ...

Réponses

  • NseaProtectorNseaProtector Membre
    14:49 modifié #2
    Bon, j'importe les dossiers dans la sections framework, comme dans l'exemple pour iPhone, mais il me taquine avec les liens dans les fichiers d'entêtes de la librairie ! J'ai beau faire un clic droit et changer les types de chemin, rien n'y fait. Je suis sur que c'est bête ...  :o
    Il n'y aurais pas autant de chemins, je les modifierais, mais là  !
    error: magick/magick-config.h: No such file or directory
    


  • AliGatorAliGator Membre, Modérateur
    14:49 modifié #3
    Build Settings du Projet "> Rajouter le chemin de tes headers de ImageMagick dans la ligne "Header SearchPath" de l'onglet Build.
  • NseaProtectorNseaProtector Membre
    14:49 modifié #4
    Merci Ali, mais rien n'y fait ! Je sèche, je crois que je vais passer a autre chose et revenir dessus une autre fois, histoire de ne rien cassé ou plutôt histoire de resté de bonne humeur ! Ce qui m'agace vraiment , c'est que je ne vois pas ce qui fait que dans l'exemple pour iPhone ça ne pose pas de soucis !

    Edit: Et si seulement je trouvais un tout petit exemple de rien qui fonctionne !!!
  • NseaProtectorNseaProtector Membre
    janvier 2010 modifié #5
    Excuse moi Ali, je viens de comprendre en double cliquant dans le champ que tu m'indiquais dans le projet iPhone, je ne connaissais pas :
    "$(SRCROOT)/"
    


    Pour le coup les chemins c'est réglé.

    Edit:
    Maintenant j'ai un autre soucis pour intégrer sur mac os ce framework:
    ./magick/color.h:59:3 ./magick/color.h:59:3: error: typedef redefinition with different types ('struct _ColorInfo' vs 'struct ColorInfo')
    Il semblerait que le compilo ne fasse pas la différence entre ColorInfo et _ColorInfo .
    Une déclaration qui serait définit 2 fois ! Mais bon, ça le fait pas dans le projet iPhone, alors va surrement falloir que je coche ou décoche quelque chose ?

  • NseaProtectorNseaProtector Membre
    janvier 2010 modifié #6
    Apparemment la déclaration dans le framework d 'imageMagick entre en conflit avec la déclaration "Palette.h" d'Apple !
    Il y'a peut-être une solution simple. Moi j'ai tout simplement renommé la déclaration et recherché son emploi pour modifier ses appels, mais je ne suis sur de rien !
    Sinon, sa compil enfin !
    Je vais pouvoir tester, mais bon il va me falloir un peu de temps...

    Edit: Soit le sujet n'interresse pas , soit on sèche ...
  • NseaProtectorNseaProtector Membre
    14:49 modifié #7
    Non, finalement ça ne compil pas ! C'est un vrai casse tête, tant pis ... Je vais chercher autre chose pour convertir les images...
  • CéroceCéroce Membre, Modérateur
    14:49 modifié #8
    Que cherches-tu vraiment à  faire? Peut-être que Core Graphics, Core Image ou QuickTime peuvent convenir.
  • NseaProtectorNseaProtector Membre
    14:49 modifié #9
    Bonjour, en fait, j'aimerais convertir un maximum de formats d'images et pouvoir alléger celles-ci lors de la conversion. L'idée qui existe peut-être déjà  ?  C'est entre autre de pouvoir draguer vers l'icône de l'application dans le dock une image et exécuter une action par défaut. Par exemple créer une miniature ou bien alléger pour le web ou simplement convertir dans un format par défaut, etc...
  • AliGatorAliGator Membre, Modérateur
    mars 2010 modifié #10
    Ben Automator te permet de faire ça en une seule action, pourquoi faire une application Cocoa ?

    - Lancer Automator, et créer un nouveau processus de type "Application"
    - Faire glisser l'action "Redimentionner les images" pour l'ajouter à  ce flux et choisir la taille de redimentionnement que tu veux (en pixels ou en %)
    - Faire glisser à  sa suite l'action "Modifier le type des images" pour l'ajouter après l'action précédente dans le flux, et choisir le format d'image (JPEG, TIFF, PNG, ...)
    - Sauver le flux automator en une nouvelle application

    Et voilà , ton application est terminée. Pas une ligne de code, réalisation en 2 minutes chrono :P
  • NseaProtectorNseaProtector Membre
    14:49 modifié #11
    dans 1269372599:

    Ben Automator te permet de faire ça en une seule action, pourquoi faire une application Cocoa ?

    Parce que ! >:(

    Sinon:
    -Disons que je penses que Mr et Mme 80% sont réfractaire à  automator
    -J'imaginez que le fait de glisser un fichier audio aif sur ce même icône pourrais en faire un wav/mp3
    -Un .mov -> .avi
    etc.
    Et que le clic sur l'icône appellerais une action par défaut (cacher toute les fenêtres par exemple)

    Maintenant l'idée d'automator est intéressante, il serait pas con que les actions disponibles soit des scripts automator dans un dossier. Du coup il serait possible d'augmenter les possibilités sans recompiler.
  • AliGatorAliGator Membre, Modérateur
    14:49 modifié #12
    Au lieu, quand tu lances Automator, de faire un nouveau processus de type "Application", tu fais un processus de type "Service", avec les mêmes actions dedans. Et tu le sauves sous le nom "Réduire de 480px et convertir en JPEG" par exemple.
    Après tu fais la même chose pour créer un service de conversion audio, video, etc, un service par conversion à  faire.
    Et basta. Bien sûr pour chaque service créé, tu précises le type de document qu'il est sensé traiter en entrée, image, texte, etc...

    Utilisation ? Comme ce sont des services, c'est contextuel. Donc une sélection de 20 fichiers MOV puis un clic droit dessus et hop dans le menu contextuel tu as ton action "Convertir les MOV en AVI" (mais tu n'as pas l'action "Convertir en JPEG", vu que cette action sait qu'elle ne prend que des images donc n'est pas proposée pour des fichiers MOV)


    Sinon, si tu persiste à  vouloir faire une appli en Cocoa, je ne vois pas trop l'intérêt d'utiliser ImageMagick pour faire ça, alors que le framework Cocoa a tout ce qu'il faut pour gérer ça...
  • NseaProtectorNseaProtector Membre
    14:49 modifié #13
    Je n'ai pas persisté, j'avais juste été séduit par le nombre de format gérer par ce framework.
    Maintenant, j'imagine qu'il est possible sans une batterie de test de savoir si il s'agit d'une image ou d'un fichier audio, non ? Je dis cela, parce qu'il me vient l'idée de créer le script "en temps réel" en fonction de la situation et des choix de l'utilisateur.
  • AliGatorAliGator Membre, Modérateur
    14:49 modifié #14
    Oui tu peux regarder les metadonnées du fichier, c'est sans doute le plus simple.
    J'ai pas regardé les classes Cocoa genre NSFileManager & co voir s'il y avait des APIs faites pour ça.
    Sinon les APIs de Spotlight te permettent de faire ça en regardant la clé kMDItemContentType (voire kMDItemContentTypeTree pour le détail "hiérarchique")

    Pour avoir une idée de ce que tu peux avoir comme résultat, tu peux appeler mdls en ligne de commande qui va t'afficher le contenu de cette clé dans les metadata du fichier que tu veux
    mdls -name kMDItemContentTypeTree /chemin/vers/un/fichier/quelconque
    

    Par exemple pour un fichier .mp4, ça me renvoie :
    kMDItemContentTypeTree = (
        "public.mpeg-4",
        "public.movie",
        "public.audiovisual-content",
        "public.data",
        "public.item",
        "public.content"
    )
    Donc on voit que c'est un fichier de type mpeg-4, qui est un type de "movie", qui est un type de "contenu audiovisuel", etc...
Connectez-vous ou Inscrivez-vous pour répondre.