Je veux pouvoir ouvrir / afficher une image (.jpg) sans verrouiller le fichier. Fondamentalement, j'ai un programme qui permet à l'utilisateur de choisir une image qui écrasera une image. Mais le problème est que j'affiche l'image écrasée. Alors comment puis-je charger une image sans le verrouiller?
Ceci est le code que je dois définir l'image maintenant p> myfilepath est égal à une chaîne qui serait quelque chose Comme "c: \ utilisateurs * \ mes images \ sample.jpg" p> p>
3 Réponses :
Cela ne pourrait-il pas causer des fuites de mémoire? Si vous souhaitez modifier la source d'image, vous ne pouviez pas disposer de () de la mémoire Morthstream, sauf si vous avez maintenu une poignée sur le temps de MemorMEstream.
Si le flux de la mémoire n'est plus enraciné, il s'agira d'une poubelle collectée comme n'importe quel autre objet géré. Cela se produira si vous attribuez un autre objet (probablement un autre flux de mémoire) au bitmapimage code> S
fluxource code>
Cela n'a pas fonctionné. Il a compilé et couru, mais il n'a pas manqué de chargement du fichier dans mon image WPF.
J'ai vérifié le code et j'ai déterminé que vous devez appeler commencer et endiniter la définition de la diffusion de StreamSource. Voir Edition ci-dessus.
Je viens de trouver cette réponse et pensais que je lui donnerais un coup de pouce depuis que j'avais des problèmes avec des fichiers image qui se sont enfermés lorsqu'ils étaient lus dans l'application. Le code ci-dessus a effectivement éliminé le problème.
quelque chose comme ceci: p > myBitmap.cachéoption = bitmapcachéoption.onload code> est la ligne que vous recherchez. Il "cache la totalité de l'image dans la mémoire à l'heure de chargement. Toutes les demandes de données d'image sont remplies de la mémoire de mémoire." De msdn
BitmapImage bmi = new BitmapImage();
bmi.BeginInit();
bmi.UriSource = new Uri(myFilePath);
bmi.CacheOption = BitmapCacheOption.OnLoad;
bmi.EndInit();
Image1.Source = bmi;
Assurez-vous d'ajouter 'PresentationCore' à vos références de votre projet ou vous ne pourrez pas trouver l'espace de noms System.Windows.Media. Après avoir ajouté que la référence ajoutez à l'aide de System.Windows.Media.Maging; au sommet de votre projet. ;)
Lorsque vous ouvrez un fichier, vous pouvez également choisir la part du fichier pour définir son Beaviour lorsqu'un autre programme nécessite ce fichier: P>
(de MSDN: http://msdn.microsoft.com/fr- US / Bibliothèque / Y973B725.aspx ) P>
Méthode File.Open (chaîne, filemode, filaccess, Paramètres mode accès
chemin
Type: System.string
Le fichier à ouvrir. p>
Type: System.IO.Filemode
Une valeur de filemode qui spécifie si un fichier est créé si l'on n'existe pas et détermine si le contenu des fichiers existants est conservé ou écrasé. p>
Type: System.IO.FileAccess
Une valeur en filaccess spécifiant les opérations pouvant être effectuées dans le fichier. p>
em> * Type: System.IO.Fileshare * em> strong>
Une valeur de fichier de recherche spécifiant le type d'accès Les autres threads ont au fichier. p>