Générateur d'icônes

septembre 2014 modifié dans Vos applications #1

Bonsoir à  tous,


 


Je viens de finir ma première App qui seras disponible dans quelques semaines sur le store, je ne compte pas m'arrêter là  et j'ai deux idées en route sur lesquelles je reviendrais dans quelques jours. Pour le moment je souhaites commencer par quelque chose de simple mais pourtant très utile, un générateur d'icônes pour iOS, Android et Windows 8. Avec nommage des fichiers, prise en compte du splash screen, etc.


 


J'ai vite fais le tour mais je n'ai pas trouver (à  ce jour) d'application digne de ce nom. De plus, je veux réaliser une App gratuite, ce qui sera le premier argument face aux autres App.


 


Bon, pour commencer, qu'est-ce que je dois utiliser pour retailler une image ? :)


 


J'ai regardé du côté de Core Image mais c'est plutôt pour les effets, reconnaissance des visages, etc.


Sinon NSImage ? Il y a bien un setSize: mais on ne peut pas choisir l'algorithme. L'idée c'est de préserver la qualité bien sur et si possible de partir d'une image vectorielle, ça serais le top.


 


Voilà , j'attends vos réactions et vos liens pour m'aider à  me lancer :)


 


Merci à  vous.


Réponses

  • Euh tu dis que tu veux commencer par un truc simple... Le traitement d'images ce n'est pas vraiment ce qui se fait de plus simple !!!

    Cela dit, c'est une bonne idée ; bon courage.

    Désolée si je n'ai pas fait avancer le schmilblick !!!
  • août 2014 modifié #3

    Oui, "simple" car il ne s'agit que de recadrage, maintenant si c'est vraiment trop dur je met de côté et je m'attaque à  une autre de mes idées qui sont plus "simple" je l'espère :)


     


    EDIT : ne me dit pas que le seul moyen de faire ça est de passer par OpenCV ?  >:)


     


    Ou si quelqu'un veut bien me donner un coup de main juste sur cette partie, je m'occupe du reste :D


  • Bonne idée. Pour iOS j'utilise automator pour créer toutes les tailles d'icônes.


     


    Attention la première qualité d'une application n'est pas son prix mais sa fonction  ::)


  • Complètement d'accord concernant le prix mais mon commentaire n'allez pas dans ce sens :)


     


     


    Je m'oriente sur OpenCV, un collègue de travail peut m'aider sur le sujet, je vous tiens au courant.


     


    Sinon oui Automator j'y ai même pas pensé :) Mais j'arrive jamais à  l'utiliser comme je le souhaite. L'avantage si on part sur du OpenCV c'est la qualité (je dis pas que Automator est inférieur mais c'est reconnu comme bibliothèque) et je pourrais en faire une version Windows via Visual Studio en récupérant le code C de OpenCV.


     


    Ceci dis je serais curieux de voir ton script...

  • CéroceCéroce Membre, Modérateur
    Pour redimensionner et recadrer, utilise Core Graphics.
    (OpenCV, c'est quoi ce délire ?)
  • Euh .. c'est quoi un générateur d'icône pour toi ? Pour moi ce nom évoque un outil sophistiqué avec des milliers de ressources graphiques de base pour construire des icônes. Exemple, devant l'actualité brûlante de ces dernières semaines je veux créer une application recensant les derniers crashs aériens. N'étant pas graphiste j'ai besoin d'avoir des silhouettes d'avions et des explosions pour les combiner. Il y aura ça dans ton application, ou c'est juste une moulinette prenant une image préexistante pour en faire un fichier d'icône ?
  • août 2014 modifié #8

    Oui c'est juste un truc qui prends une image en entrée et qui en donne une multitude en sortie.


     


    Sinon oui je suis tombé sur Core Graphic, c'est ce que je cherchais au début en fait (avant de partir sur autre chose). Je pense aussi que ça sera plus simple.




  • Pour redimensionner et recadrer, utilise Core Graphics.

    (OpenCV, c'est quoi ce délire ?)




     


    Ce délire c'est que je ne connais pas bien l'environnement encore. Ensuite, comme dis plus haut, si je veux passer l'App sous Windows, Core Grpahics tu peux oublier et enfin (le plus important), je ne sais pas si avec Core Graphics, il est possible de choisir le mode d'interpolation. Pour le moment j'ai rien vu de tel mais j'ai pas "trop" creuser.

  • CéroceCéroce Membre, Modérateur
    CGContextSetInterpolationQuality(). Par contre, Apple n'est pas claire du tout sur les algorithmes utilisés dans chaque cas.

    Core Image propose une interpolation par l'algorithme de Lanczos qui peut donner de meilleurs résultats.
  • Merci pour ce retour, je vais regarder plus en avant ce week-end. L'interface est prête, je glisse une image dans un container et je la récupère. Je reviendrais faire un topo de l'avancement ou si j'ai des questions :)


  • J'ai bien compris la nécessité d'avoir un CGContextRef pour redimensionner une image. Mais comment vous faites pour récupérer une image PNG (ou autres) dans un context ?


     


    Merci.


  • AliGatorAliGator Membre, Modérateur
    Pour créer un contexte, dessiner dedans, et récupérer le résultat dessiné dans une UIImage :
    // Création du contexte bitmap pour dessiner dedans
    UIGraphicsBeginImageContext( someSize );
    CGContextRef ctx = UIGraphicsGetCurrentContext()];

    // Dessin de l'image
    // (là  tu mets ton code qui dessine dans le contexte ctx

    // Récupération de l'image dessinée dans le contexte sous forme de UIImage
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
    // "Fermer" le contexte
    UIGraphicsEndImageContext();
    Et si tu veux ensuite sauver cette UIImage dans un fichier PNG, il suffit d'utiliser UIImagePNGRepresentation(img) qui va te retourner un NSData (correspondant à  la représentation binaire au format PNG de ton image) qu'il te suffira ensuite d'écrire sur le disque (via la méthode "writeToFile:atomically:" de NSData, par exemple).
  •   ???   Je n'aurai qu'un mot,  Fabrique d'icônes = Iconnerie


  • Tu ne voulais pas plutôt écrire iConnerie, vu ton amour immodéré pour les devices et autres tablettes ?
  • C'est possible aussi comme orthographe, vu mon dédain des choses à  peu près inutiles!


  • DrakenDraken Membre
    août 2014 modifié #17
    Moi c'est les choux rouges que je trouve inutiles !
  • Ali, je ne suis pas sur de comprendre.


     


    Déjà  je pars d'un fichier png, c'est donc une image que je veux récupérer, pas dessiner.


     


    Ensuite, il s'agit de UIKit, hors je développe une app OS X.


     


    Je veux bien quelques lumières si je suis out of limit :)


     


    Thanks.


  •   ::)   euh! tu es là  dans la section iPhone, iPad, iPod. Et les adhérents te répondent en fonction de la section ou tu mets tes posts.


    Je pense que le webmaster va migrer ton post dans une section dévolue à  Mac OSx.


  • septembre 2014 modifié #20

    Hum, il y a donc deux sujets à  déplacer (celui sur le Markdown), désolé j'ai pas fais gaffe.

     

    Je comprends mieux la réponse de Ali :D

     

    EDIT : et d'ailleurs pas de UIImagePNGRepresentation dans AppKit.


     


    Sujet déplacé dans la bonne section.


  • Bon, apparemment faut un graphicsContextWithBitmapImageRep pour redimensionner l'image et setter le setImageInterpolation.


     


    Le truc c'est que pour le context il faut un imageRep mais je récupère celle-ci via un NSImageView et je suis bloqué ici. Je peux faire [monImageView image] pour la récupérer mais dans ce cas c'est une NSImage et non un NSImageRep.


     


    Et quid de la save ? Parce que y a que le TIFF representation que j'avais essayé avant la réponse de Ali mais dans ce cas mon PNG de quelques Ko passe à  5Mo.


     


    Bref, HEEEELLPPP :)


     


    Merci.


  • MalaMala Membre, Modérateur
    Le sujet du redimenssionnement d'image en Cocoa a été abordé à  de nombreuses reprises. Il suffit de faire une recherche sur NSImageRep.

     

    PS: sinon oui, OpenCV permet entre autre de faire de la retaille.

  • AliGatorAliGator Membre, Modérateur

    Ouais OpenCV permet certes de faire du traitement d'image, mais c'est une librairie cross-plateforme pas forcément simple à  intégrer.


    Et puis c'est une librairie de "Computer Vision", donc très orienté dans le traitement d'image et reconnaissance d'image de façon assez poussée (reconnaissance de formes, de contours, tracking, etc)


     


    Si c'est juste pour des petits effets sur ton image (ajustement de contraste, luminosité, etc), de composition d'images, ou de redimensionnement ou des opérations de ce genre, OpenCV est clairement le bulldozer pour tuer une mouche. Bulldozer pas simple à  démarrer en +, vu que c'est une lib cross-plateforme et donc que tu ne vas pas pouvoir manipuler directement les objets Cocoa comme NSImage ou NSImageRep, mais va être obligé de passer par des objets C bas-niveau pour interagir avec la lib.


     


    C'est déjà  pas si simple à  comprendre et intégrer pour qqun qui sait déjà  bien coder, si en + tu es débutant, tu vas te casser les dents à  commencer un premier projet en te mettant déjà  qques bâtons dans les roues dès le début.


     


    Alors qu'il y a tout ce qu'il faut dans le framework Cocoa pour manipuler les images et faire qques traitements dessus (redimensionnement, composition, ajustements, ...) qui sont bien plus simples à  utiliser et directement intégrés à  Cocoa, ça te simplifiera la vie et te prendra moins la tête, surtout pour un premier projet.


  • Ali, je suis complètement d'accord. J'avais envisagé OpenCV car je ne savait pas comment faire mais je sais que c'est pas si simple. Je suis pas vraiment débutant mais pas non plus expert et je me passe bien de ce genre de truc. (bien que sur le dev iOS/OS X je me considère débutant du fait que je ne connais pas encore tous les framework).


     


    Bon, par contre, c'est justement les NSImage et NSImageRep qui me posent pour le moment problème car je n'arrive pas à  communiquer avec tout ce beau monde. (récupérer l'image dans un contexte à  partir d'une NSImageView et la sauvegarder, pour le redimensionnement et le set de l'algorithme normalement c'est bon).


Connectez-vous ou Inscrivez-vous pour répondre.