Accueil > Forum > > > > OutOfMemoryException quand je fait Graphics.FromImage
OutOfMemoryException quand je fait Graphics.FromImage
lundi 10 novembre 2008 à 02:20:29 |
OutOfMemoryException quand je fait Graphics.FromImage

FPell
|
J'ai un programme qui sert à modifier une image et ajouter du texte dessus et il supporte l'opération annuler. Mais quand je clone l'image originale (pour pouvoir annuler ensuite), quand je fais Graphics.FromImage pour modifier l'image, j'ai une exception OutOfMemoryException qui est lancée. Notez que je fait Graphics.FromImage à partir de l'image originale, et non pas à partir de la copie (clone). Voici un code très simplifié qui montre le bogue que j'ai : using System; using System.Drawing; using System.Windows.Forms; using System.IO;
namespace TestImage { /// /// Description résumée de Form1. /// public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button btnLoad; private System.Windows.Forms.OpenFileDialog openFileDialog1; /// /// Variable nécessaire au concepteur. /// private System.ComponentModel.Container components = null;
public Form1() { // // Requis pour la prise en charge du Concepteur Windows Forms // InitializeComponent();
// // TODO : ajoutez le code du constructeur après l'appel à InitializeComponent // }
/// /// Nettoyage des ressources utilisées. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); }
#region Code généré par le Concepteur Windows Form /// /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas /// le contenu de cette méthode avec l'éditeur de code. /// private void InitializeComponent() { this.btnLoad = new System.Windows.Forms.Button(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.SuspendLayout(); // // btnLoad // this.btnLoad.Anchor = System.Windows.Forms.AnchorStyles.None; this.btnLoad.Location = new System.Drawing.Point(72, 128); this.btnLoad.Name = "btnLoad"; this.btnLoad.Size = new System.Drawing.Size(152, 23); this.btnLoad.TabIndex = 0; this.btnLoad.Text = "Load And Clone Image"; this.btnLoad.Click += new System.EventHandler(this.btnLoad_Click); // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.Add(this.btnLoad); this.Name = "Form1"; this.ResumeLayout(false);
} #endregion
/// /// Point d'entrée principal de l'application. /// [STAThread] static void Main() { Application.Run(new Form1()); }
private void btnLoad_Click(object sender, System.EventArgs e) { openFileDialog1.ShowDialog(this); String strFileName = openFileDialog1.FileName; if (strFileName.Length > 0) CloneAndGetGraphicsFromOriginalImage(strFileName); }
private void CloneAndGetGraphicsFromOriginalImage(String strFileName) { FileStream stream = File.Open(strFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Image OriginalImage = Image.FromStream(stream); stream.Close();
//Si j'enlève cette ligne-ci, tout fonctionnerait bien (mais dans ma vrai application j'en ai de besoin pour permettre d'annuler) Image imgClone = (Image)(OriginalImage.Clone()); // Avec cette ligne, la ligne suivante va lancer un OutOfMemoryException
Graphics g = Graphics.FromImage(OriginalImage); // <-- Lance un OutOfMemoryException, quand l'image a été cloné.
g.DrawString("test", DefaultFont, new SolidBrush(Color.Black), 0, 0); this.BackgroundImage = OriginalImage; } } }
|
|
lundi 10 novembre 2008 à 12:43:42 |
Re : OutOfMemoryException quand je fait Graphics.FromImage

Lutinore
|
Salut, ne ferme pas le stream ou utilise une autre méthode pour charger l'image.
|
|
lundi 10 novembre 2008 à 14:40:45 |
Re : OutOfMemoryException quand je fait Graphics.FromImage

xmox667
|
Réponse acceptée !
Salut, Moi j'utilise ceci pour charger mes images:
public Bitmap ImageFromFile(string filename) { FileStream Stream = File.Open(filename , FileMode.Open); Bitmap Image = new Bitmap(Stream,true); Stream.Close(); return Image; } A+
|
|
mardi 11 novembre 2008 à 01:35:18 |
Re : OutOfMemoryException quand je fait Graphics.FromImage

FPell
|
Réponse acceptée !
Merci beaucoup, en effet ça fonctionne très bien avec Image OriginalImage = Image.FromStream(stream, true); Le dernier paramètre True semble important quand on ferme le stream.
|
|
mardi 11 novembre 2008 à 22:30:41 |
Re : OutOfMemoryException quand je fait Graphics.FromImage

olibara
|
Réponse acceptée !
Tres intéressant !
J'avais un problème similaire ! Il semble en effet que la gestion du buffer image reponde a des regles un peu floues
J'avais remarqué que pour exploiter les property items il fallait
1- Soit les lires AVANT la fermeture du fichier 2- Soit en lire un qulquonque avant de fermer le fichier 3- Si une des ces deux operations a été faites il restent consistant APRES la fermeture SINON ca pete !
Mais ton post vient de me faire découvrir les option complementaires de la methode FromStream qui vont forcer le lock du buffer data FromStream(stream,bool,bool);
Creates an Image from the specified data stream, optionally using embedded color management information and validating the image data.
|
|
Cette discussion est classée dans : windows, system, image, forms, btnload
Répondre à ce message
Sujets en rapport avec ce message
picturebox [ par johnnous ]
bonjour j'ai un petit soucis j'ai une picturebox avec une image de font sur celle ci j'ajoute d'autre picturebox fille je dois pouvoir deplace et fair
Aide propos d'une erreur [ par shedex ]
pourriez vous me donner une solution à propos de cette erreur car je n'arrive pas à la résoudre merci d'avance : L'exception System.ArgumentOutOf
Exécution d'un script SQL à partir d'un menu contextuel [ par inf2010 ]
Bonjour heureuse de faire partie de votre communauté [^^happy3] Je suis débutante en C#/.NET je fais une application qui me permet d'exécuter un scri
intercepter et annuler un shutdown sous seven [ par arnahel ]
Bonjour, dans le cadre d'un projet, j'ai besoin d'intercepter et d'annuler une demande de shutdown d'un utilisateur sous seven. L'application sur laq
Problem avec l'Activex Vivotek RTSPVaPg [ par gouranos ]
Bonjour, j'ai crée une simple Widows Form sous C#, le but est de pouvoir lire le flux video d'une camera IP Pan/Tilt Vivotek 7135. L'Activex RTS
Probleme C# BDD OutOfRange [ par KrqcS ]
Bonjour à vous, j'essaye désesperemment de mettre le contenu de la colonne d'une table dans une combobox mais pas moyen. [code=cs]OleDbConnection Cal
L'exception System.AccessViolationException n'a pas été gérée [ par Caliberdev ]
Bonjour,J'ai Microsoft Visual Studio 2008 installé. Le projet C# ne veut pas se lancer subitement en mode Deboggage et m'affiche le message suivant:L'
Gérer une virgule dans un textbox [ par ammany ]
Salut , je voudrais gérer une petite calculatrice . Dans mon programme je dois gérer un nombre a virgule ( ex: 10.20) dans une textbox et ensuite fair
Erreur envoi mail [ par doctanks ]
Bonjour,Voila je tente d'envoyer un mail par l'intermédiaire d'un petit logiciel mais lors de l'envoi je reçois le message: "Une exception non gérée s
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet 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
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
|