Effet temps réel sur une image

APAP Membre
12:27 modifié dans API UIKit #1
Bonjour,

Je commence tout juste à  développer sur iPhone et vous prie d'excuser mes questions si elles sont bêtes.

Je cherche à  réaliser pour me faire la main une petite application permettant de modifier en temps réel une image (effet bump mapping en fonction de la position du doigt sur l'écran).

Quelle est le meilleur moyen de procéder pour avoir une application assez rapide? passer par un UIImage, récupérer les pixels, les modifier, afficher le résultat et recommencer?

Où bien il existe un moyen plus simple et/ou plus rapide?

Merci par avance pour votre aide

Réponses

  • Philippe49Philippe49 Membre
    12:27 modifié #2
    Le meilleur moyen c'est la bibliothèque Core Image et les filtres associés
    (chercher CoreImageFunHouse dans le dossier Developer comme appli de démo)

    Malheureusement cette bibliothèque, bien que basée sur CoreGraphics et compatible avec CoreAnimation, n'est pas encore utilisable sur iPhone ( sauf quelques effets comme les transitions par exemple)

  • APAP Membre
    12:27 modifié #3
    Donc pour iPhone, qu'est ce qui est préconisé?
  • Philippe49Philippe49 Membre
    12:27 modifié #4
    Personnellement, je dirais attendre. La technologie est prête, si elle n'est pas encore faite sur iPhone c'est qu'il y a sans doute encore quelques empêchements. 

    Sinon passer par le traitement des CGImageRef, version bas niveau des UIImage, refabriquer le filtre ... gros boulot. Un mot clé dans la doc : Quartz 2D Programming Guide.
  • AliGatorAliGator Membre, Modérateur
    12:27 modifié #5
    Je ne suis pas sûr qu'elle soit dispo un jour, car je pense que si c'est pas dispo c'est plus par manque de ressources que parce qu'ils n'ont pas eu le temps de l'intégrer. En effet CoreImage c'est quand même pas rien comme lib côté ressources et l'iPhone est certes puissant, mais n'est pas fait pour faire de l'intensif côté images.
    Déjà  pour tout ce qui est directives de dessin "à  la main", on n'a pas les NSBezierPath mais on doit faire ça bas niveau... Alors les effets CoreImage, s'ils les mettaient à  disposition de tout le monde pour qu'on puisse les utiliser facilement alors que ça peut vite prendre de la ressource, précieuse sur iPhone, c'est la porte ouverte à  de la conso mémoire et rsrc "juste pour faire joli".

    Conclusion, c'est peut-être jouable mais en refaisant l'effet à  la main, mais perso je pense pas que l'effet de ce genre sera dispo en natif un jour dans l'iPhone.
  • APAP Membre
    12:27 modifié #6
    Merci pour vos réponses.
    Une idée de ce qu'utilise les applis du genre d'iSteam
    http://www.journaldugeek.com/2009/01/02/isteam-de-la-buee-dans-mon-iphone/
    pour arriver à  leur fins?
  • AliGatorAliGator Membre, Modérateur
    12:27 modifié #7
    Je n'ai jamais testé isteam mais vu la vidéo, ça c'est un effet simple à  réaliser :
    1) Tu prépares une image contenant la buée (image PNG avec canal alpha pour la semi-transparence)
    2) quand tu souffles, tu mets l'image par dessus l'image du springboard
    3) Quand tu bouges ton doit, ça efface cette partie de l'image de buée là  où tu as mis ton doigt

    Aucun effet complexe de ce côté pour le traitement d'image genre déformation d'image ou quoi, contrairement à  l'idée de "bump" que tu proposes, où là  c'est un peu plus consommateur et plus complexe en traitement d'image.
  • APAP Membre
    12:27 modifié #8
    Aligator: pas bête du tout!

    sinon avec les CGImageRef, il y a des choses à  savoir afin de pas trop perdre de temps machine?
  • Philippe49Philippe49 Membre
    12:27 modifié #9
    Ou bien on dessine un CGPath rempli d'une couleur buée, que l'on met à  jour avec les mouvements d'effacements ...
  • Philippe49Philippe49 Membre
    12:27 modifié #10
    dans 1233087789:

    sinon avec les CGImageRef, il y a des choses à  savoir afin de pas trop perdre de temps machine?

    Avec les CGImageRef, tu codes en C. C'est donc les règles d'optimisation classiques du C qui sont à  prendre en compte.
Connectez-vous ou Inscrivez-vous pour répondre.