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

Langage Delphi Discussion :

Graphisme, imagerie problème de taille mémoire ?


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Graphisme, imagerie problème de taille mémoire ?
    Bonjour,

    Je développe une "grosse application" actuellement l'exécutable fait 5 Mo...
    Je travaille à partir de photos sur des bimaps de 10 millions de pixels, même si au départ (comme à l'arrivée) les images sont en JPEG.

    J'utilise une routine de sélection rectangulaire d'une partie de l'image. Cette routine a besoin d'une copie de l'image (pour régéner les rectangles de sélection) ce qui implique deux bitmaps chacune de 30 Mo.

    J'ai mis au point la routine de sélection rectangulaire dans une petite application qui utilise les mêmes images de même taille mais dont l'exécutable ne fait que 500 Ko. La routine de sélection utilise le même code source dans la petite application comme dans la grande.

    Problème: la sélection fonctionne pafaitement dans la petite application pas dans la grande ! Quand on déplace le curseur les rectangles s'effacent dans la petite pas dans la grande !

    Je pense à un problème de taille de mémoire. Faut-il augmenter les tailles de pile ? ou quelqu'un a t'il une idée pour régler ce problème ?

    Nota: je travaille sur un PC de 2Go de RAM sous Vista avec Delphi 2007

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    ce qui implique deux bitmaps chacune de 30 Mo.

    Je n'ai pas la réponse au problème mais en tous les cas, ton algo me semble extrèment lourd. Je pense qu'il existe beaucoups plus simple et surtout moins gourmand en mémoire pour réaliser ce genre de fonction...

    Tu es sûr de ne pas pouvoir (vouloir) faire autrement ?

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Sub0 Voir le message

    Je n'ai pas la réponse au problème mais en tous les cas, ton algo me semble extrèment lourd. Je pense qu'il existe beaucoups plus simple et surtout moins gourmand en mémoire pour réaliser ce genre de fonction...

    Tu es sûr de ne pas pouvoir (vouloir) faire autrement ?
    en général on dessine une ligne en XOR pour afficher la sélection...il suffit de la redessiner pour l'effacer, c'est la magie du XOR

    ceci je ne vois pas en quoi la taille de l'executation devrait influencer le code dont il est question, le problème doit être ailleurs
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut A propos du XOR
    J'avais commencé avec XOR mais je ne suis pas arrivé à mettre au point cette routine...

    J'ai trouvé l'exemple qui m'a servi sur le site "Special Delphi Michel" écrit en 2002 par Alexandre Morlet télécharchable dans un ZoneSelect.zip.
    Mais l'image utilisée dans cet exemple tient plus du timbre poste que du grand écran !

    Ou pourrais-je trouver un exemple avec XOR ?

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Bonjour,

    Ou pourrais-je trouver un exemple avec XOR ?
    ... Pour ma part je n'utilise pen.Mode:=pmXOR que pour des tracés sur un fond de canvas noir et comme j'utilise le plus souvent des fonds blancs j'utilise donc plutôt pen.mode:=pmNotXor.

    Tu peux trouver ici : http://www.developpez.net/forums/sho...ur#post2927064
    un exemple de code où :
    - je trace des trucs (droites, rectangles, polygones, etc) sur le canvas d'un TImage,
    - ensuite je les agrippe à la souris pour les déplacer, pivoter, modifier.

    Dans le onMouseDown j'identifie le truc sélectionné à la souris ... et dans le onMouseMove, avant de déplacer je re-trace le truc en mode pmNotXor pour l'effacer dans sa position initiale, ensuite je corrige ses paramètres de re-positionnement, et pour terminer je re-trace le truc dans la position modifiée en mode pmNotXor pour le rendre visible.

    Le code est facilement modifiable pour faire des rectangles de sélection et il est même simplifiable pour le cas de rectangles simples et non inclinés (suffit de supprimer la procedure RotatRect() qui permet de pivoter un rectangle et la procedure TraceRectBis() qui permet de tracer un rectangle à double bords épais d'un seul pixel et espacés de la valeur de epTrait alors que la procedure TraceRect() trace un rectangle à un seul bord épais de la valeur affectée à epTrait.

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Merci Gilbert Geyer
    Le lien "http://www.developpez.net/forums/sho...ur#post2927064" me dirige vers une "suite et fin"...

    Où trouver le début ?

    Dans le code sorce il manque de nombreuses définitions telles que :
    - La composition de frmImgD
    - la déclaration des variables MesDroitesA, MesRectangles, MesPolygones etc..
    Je suppose qu'il manque en fait le lien sur le début de l'information

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de taille mémoire
    Par Mengué georges dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/12/2013, 11h56
  2. problème de taille et de mémoire
    Par soria_t dans le forum C
    Réponses: 31
    Dernier message: 22/02/2007, 08h58
  3. Réponses: 25
    Dernier message: 16/07/2003, 20h41
  4. [langage] Problème de taille de fichier à mettre dans
    Par And_the_problem_is dans le forum Langage
    Réponses: 10
    Dernier message: 13/08/2002, 09h41
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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