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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|