Accueil > Forum > > > > Mettre un TBitmap en mémoire
Mettre un TBitmap en mémoire
dimanche 21 juin 2009 à 15:32:38 |
Mettre un TBitmap en mémoire

Matware456
|
Bonjour,  Comme le titre l'indique j'aimerais placer un TBitmap en mémoire, c'est à dire le placer entièrement dans la RAM pour pouvoir le réutiliser dans un autre programme, j'ai bien cherché et je n'ai trouvé que quelques solutions : avec le handle du bitmap (ne marche pas, je croit qu'il est détruit dès que l'on ferme le programme), avec un TMemoryStream (idem) et avec un CreateFileMapping (doit marcher mais je suis un peu perdu dans son utilisation...). L'idée serait de faire 3 fonctions dans une DLL :ShareDC(window_handle:HWND):Integer; (récupération du DC déjà programmé mais impossible de mettre le bitmap créé en mémoire, valeur de retour : le handle de l'image en mémoire) GetPixel(x:integer,y:integer,image_handle:integer):COLORREF; (retourne la couleur du pixel grâce à un ScanLine) Free(image_handle:integer); (libére l'image de la mémoire) J'en profite aussi pour vous demander si ces fonctions seront rapide car si elles ne le sont pas, ce n'est pas la peine... Merci pour votre future aide précieuse ! :)
|
|
dimanche 21 juin 2009 à 18:05:11 |
Re : Mettre un TBitmap en mémoire

Bacterius
|
Tu peux vraiment pas le mettre dans un fichier temporaire qui durerait le temps que Windows dure ?
Cordialement, Bacterius !
|
|
dimanche 21 juin 2009 à 18:13:56 |
Re : Mettre un TBitmap en mémoire

Matware456
|
Bah malheureusement non, j'ai besoin de ces fonctions pour en remplacer une autre qui est très lente (dans un autre langage) et j'aimerais ne pas passer par le disque (trop lent...).
Merci de ton aide ! matware456
|
|
dimanche 21 juin 2009 à 19:10:45 |
Re : Mettre un TBitmap en mémoire

Bacterius
|
Réponse acceptée !
Tu peux mettre dans le fichier paginé de Windows mais j'ai peur qu'il faille établir une connexion simultanée pour effectuer le transfert inter-processus (il faut qu'à un moment, les 2 processus aient le même accès au fichier, car si aucun processus n'a plus accès au fichier paginé ce dernier est détruit.
Cordialement, Bacterius !
|
|
dimanche 21 juin 2009 à 19:15:27 |
Re : Mettre un TBitmap en mémoire

Matware456
|
Mmhh, pas pratique... N'y-aurait-il pas d'autre solution ? Sinon pour le même accès au fichier, c'est-à-dire ?
|
|
dimanche 21 juin 2009 à 19:27:44 |
Re : Mettre un TBitmap en mémoire

Bacterius
|
Tu peux lire mon tutoriel sur les pointeurs, il y a un chapitre dédié aux fichiers paginés, tu pourrais y apprendre des trucs.
http://www.delphifr.com/tutoriaux/POINTEURS-DELPHI_962.aspx
Après je t'explique si tu as toujours des questions.
Cordialement, Bacterius !
|
|
dimanche 21 juin 2009 à 19:47:32 |
Re : Mettre un TBitmap en mémoire

Matware456
|
Déjà lu... (il est super bien fait ^^)
Mais tu ne parles pas de la suppression de la ressource quand elle n'est plus utilisée, peux-tu m'en dire plus ?
Et sinon pourquoi ne pas tout simplement utilisé le handle d'un TBitmap sans le détruire, ça marcherait peut-être... Mais mes essais n'ont pas été concluant. =/
|
|
dimanche 21 juin 2009 à 20:06:31 |
Re : Mettre un TBitmap en mémoire

Bacterius
|
Alors,
Windows a introduit la notion de fichier paginé ... blablabla ... seulement ce fichier n'existe que tant qu'un processus s'en sert. Il existe en fait un compteur de référence sur un objet quelconque (ici le fichier paginé). Lorsqu'il est créé, ce compteur passe à 1. Lorsqu'un processus essaye de créer (ou tente d'ouvrir) le même fichier, le compteur s'incrémente. Lorsqu'un processus libère (ou ferme) le même fichier, le compteur se décrémente. Lorsque le compteur passe à 0, l'objet (fichier paginé) est détruit. C'est pourquoi il faut toujours garder un compteur > 0. Donc, il faudrait faire comme ça :
Processus 1 crée le fichier (Compteur à 1)
Processus 2 ouvre le fichier (Compteur à 2)
Processus 1 ferme le fichier (Compteur à 1)
Processus 2 fait des trucs sur le fichier
Processus 2 libère le fichier (Compteur à 0)
Cordialement, Bacterius !
|
|
dimanche 21 juin 2009 à 20:12:43 |
Re : Mettre un TBitmap en mémoire

Matware456
|
Ah ok je croyais que l'espérance de vie du fichiers mappé était limitée. ^^
Moi ça serait plutôt ça :
Processus 1 créé le fichier mappé via une DLL et renvoi son identifiant.
Processus 1 traite des données (sans le fichier mappé).
Processus 1 rentre dans une boucle et analyse les pixels de l'image mappé (grâce à la fonction expliquée dans mon premier message).
Processus 1 libère le fichier mappé.
Merci de ton aide encore une fois ! :)
Matware456
|
|
dimanche 21 juin 2009 à 20:31:20 |
Re : Mettre un TBitmap en mémoire

Bacterius
|
"Ah ok je croyais que l'espérance de vie du fichiers mappé était limitée."
C'est ce que je viens d'expliquer, tu avais raison donc. N'y-a-t-il pas un problème dans ta phrase ?
Cordialement, Bacterius !
|
|
Cette discussion est classée dans : image, handle, mémoire, integer, tbitmap
Répondre à ce message
Sujets en rapport avec ce message
TBitmap et occupation mémoire [ par ThWilliam ]
Bonjour à tous. <p class="MsoNorma
Copie rapide d'image entre TBitmaps [ par zorg63 ]
Désolé pour le tire qui n'est pas très clair, je ne savais pas comment résumer mon problème. Le voici :J'ai posté il y a quelques temps une source uti
PB lecture et enregistrement d'image [ par trollnumber1 ]
TrollBonjours,Jai un probleme quand je load mes images l'image n'apparait pas mes les hints s'affiche et je ne suis plus capable de faire du glisser d
Affichage rapide d'image [ par zorg63 ]
Désolé pour le tire qui n'est pas très clair, je ne savais pas comment résumer mon problème. Le voici :Je viens de poster une source utilisant l'affic
comment affecter une bitmap a une image [ par didulle ]
Salut tout le mondej'aimerais utilisé une variable de type bmp sur laquelle j'effectue des traitements. mais dés que je l'affecte à l'image il y a rie
problème d'impression d'image XP [ par goloa ]
Bonjour,alors je reviens à la charge avec ce problème qui me semblais avoir été résolu ... (en tout cas sous win2000 ça l'est) (voir http://www.delph
Chargement d'images en masse depuis un TImagelist [ par Mr7Bungle ]
Bonjour à tous , Je réalise un programme qui scan tout les dossiers d'un repertoire donné. Chaque dossier contient une image nommée "Folder.jpg" . En
Problème de classe dans delphi [ par Ishizaki ]
Hello tout le monde, voilà, j'ai un gros problème qui m'a foutu mon oral en l'air ce matin. En fait, j'ai fait un ptit programme sous delphi qui s'oc
Interpreter et recuperer la premiere image d'une recherche Google [ par Yil2201 ]
Salut! Je suis à la recherche d'un moyen de pouvoir, lorsque l'utilisateur tape l'artiste et l'album, rechercher la pochette sur Google. Mais voilà, j
affichage d'images [ par guigui265 ]
bonjour, j'ai un formulaire ou j'affiche une image que j'ouvre avec un openpicturedialog. je voudrais ensuite faire comme le fais l'afficheur de windo
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|