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

Millie Discussion :

[Suggestion] Savoir si on est en preview ou non pendant un calcul


Sujet :

Millie

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 189
    Par défaut [Suggestion] Savoir si on est en preview ou non pendant un calcul
    Bonjour,

    Comme il est possible d'avoir une preview (image de petit format) dans le GenericPluginFilter.

    Ce serait quand même plus pratique de savoir si on est en preview pendant un calcul.
    En effet, le preview peut complètement rater pour des filtres locaux. (typiquement un flou Gaussien de rayon 100 sur une image de taille 5000 va être carrément différent sur l'image réduite de taille 500).

    De plus, cela permettrait de mettre en place des systèmes de cache.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Il y a quelque chose de spécial a faire pour la preview dans un GenericPluginFilter ?

    J'ai juste ajouté "setWithPreview(true)" dans le constructeur et j'ai un problème. J'ai bien la preview qui s'affiche (très grande d'ailleurs), et qui se met a jour en fonction des params du filtre. Mais quand je fais "OK", l'image originale est remplacée par une surimposition de plusieurs images.

    EDIT: Ah ! j'ai compris. Tu utilises la même instance du filtre pour la preview et pour le calcul final. Donc l'image passée en paramètre de "filter()" n'est pas la meme (en particulier la taille). Il faut donc faire attention si on fait des précalculs sur l'image.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    EDIT: Ah ! j'ai compris. Tu utilises la même instance du filtre pour la preview et pour le calcul final. Donc l'image passée en paramètre de "filter()" n'est pas la meme (en particulier la taille). Il faut donc faire attention si on fait des précalculs sur l'image.
    Oui, il faut faire attention avec ça. J'ai voulu mettre la possibilité de savoir si on est dans une preview ou non, mais j'ai complètement oublié.

    Il faudrait également connaître le "scale factor" avec l'image d'origine, car sinon, on est incapable d'évaluer par exemple le rayon pour un flou.

    Il faudrait également ajouter la possibilité au filtre de donner la taille maximal de la longueur ou la largeur pour la preview (notamment si la personne qui fait le filtre pense que 700 est trop gros pour une preview).

    Pour l'instant les tailles sont définis dans le fichier de config MillieGUI.properties :
    gui.genericpluginwindowStartXWithPreview= 100
    gui.genericpluginwindowStartYWithPreview= 100
    gui.genericpluginwindowPreviewImageSize= 700


    Pour résumer :
    • Savoir si on est en mode preview
    • Connaître le scale factor entre la preview et l'image originale
    • Pouvoir configurer la taille de la preview

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    On peut aussi inverser le contrôle : avoir une méthode "BufferedImage previewFilter()" dans le plugin. Ca implique juste de créer une interface "Previewable" (et éventuellement de fournir deux classes : GenericPluginFilter et GenericPluginFilterWithPreview)

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface Previewable {
    	BufferedImage previewFilter() throws Exception;
    }

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public abstract class GenericPluginFilterWithPreview extends GenericPluginFilter implements Previewable {
    }

    Charge au développeur de renvoyer une image de preview.

    Code java : 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
    @PluginInfo(name="TestPlugin", category="test")
    public class TestPlugin extends GenericPluginFilterWithPreview { 
     
    	public TestPlugin() { }
     
    	@Override
    	public BufferedImage filter() throws Exception {
    		// ...
    		return output;
    	}
     
    	@Override
    	public BufferedImage previewFilter() throws Exception {
    		// ...
    		return preview;
    	}
     
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Il faut juste que je vois comment gérer correctement la taille de la boite de dialogue (car difficile de donner une taille fixe si je connais pas la taille de la preview au début )

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par millie Voir le message
    Il faut juste que je vois comment gérer correctement la taille de la boite de dialogue (car difficile de donner une taille fixe si je connais pas la taille de la preview au début )
    Tu peux toujours "forcer" la taille de l'image de preview, en allouant le bufferimage avant d'appeler la méthode preview. Charge au developpeur de remplir correctement le bufferimage passé en paramètre.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface Previewable {
    	void previewFilter(BufferedImage preview) throws Exception;
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. [Applet] Savoir si Java est installé ?
    Par MagicManu dans le forum Applets
    Réponses: 5
    Dernier message: 18/06/2004, 15h56
  2. Savoir quel OS est installer sur une machine
    Par batmat86 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 16h16
  3. [C#] Comment savoir si on est logué ou pas?
    Par pc152 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/05/2004, 09h47
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. [fichier] savoir si X est fichier ou répertoire
    Par iubito dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2003, 13h55

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