Externalexception A Generic Error Occurred
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about a generic error occurred in gdi c# image save hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges a generic error occurred in gdi bitmap save c# Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other.
System.runtime.interopservices.externalexception (0x80004005): A Generic Error Occurred In Gdi+.
Join them; it only takes a minute: Sign up How to find reason for Generic GDI+ error when saving an image? up vote 7 down vote favorite 4 Having a code that works for ages when loading and
A Generic Error Occurred In Gdi In C# Windows Application
storing images, I discovered that I have one single image that breaks this code: const string i1Path = @"c:\my\i1.jpg"; const string i2Path = @"c:\my\i2.jpg"; var i = Image.FromFile(i1Path); i.Save(i2Path, ImageFormat.Jpeg); The exception is: System.Runtime.InteropServices.ExternalException occurred A generic error occurred in GDI+. at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) at System.Drawing.Image.Save(String filename, ImageFormat format) at ... As far as I can see, there is nothing special about the image. It is approx 250 pixels in size and can be how to solve a generic error occurred in gdi+ opened in e.g. Windows Image Viewer or Paint.NET: (Since the image above, after being uploaded to Stack Overflow does not produce the error anymore, I've put the original image here) What I discovered is that upon calling the Save method, the destination image file is being created with zero bytes. I am really clueless on what causes the error. My questions: Can you think of any special thing that would hinder .NET from saving the image? Is there any way (beside panicing) to narrow down these kind of errors? c# .net image gdi+ system.drawing share|improve this question edited Mar 22 '13 at 13:52 asked Mar 22 '13 at 13:02 Uwe Keim 22.6k25100159 MSDN says a Bitmap loaded from a Stream requires the Stream to remain in existence as long as the Bitmap exists. –Jesse Chisholm Nov 11 '15 at 0:14 add a comment| 6 Answers 6 active oldest votes up vote 17 down vote accepted While I still did not find out the reason what exactly caused the error when saving the image, I found a workaround to apply: const string i1Path = @"c:\my\i1.jpg"; const string i2Path = @"c:\my\i2.jpg"; var i = Image.FromFile(i1Path); var i2 = new Bitmap(i); i2.Save(i2Path, ImageFormat.Jpeg); I.e. by copying the image internally into a Bitmap instance and saving this image instead of the original image, the error disappeared. I'm assuming that by copying it, the errone
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn
How To Fix A Generic Error Occurred In Gdi+
more about Stack Overflow the company Business Learn more about hiring developers or system.runtime.interopservices.externalexception: a generic error occurred in gdi+. posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community a generic error occurred in gdi+. asp.net c# Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up ExternalException: A generic error occurred in GDI+ up vote http://stackoverflow.com/questions/15571022/how-to-find-reason-for-generic-gdi-error-when-saving-an-image 2 down vote favorite 1 I am using Selenium WebDriver in C# and I am trying to dynamically create a folder and save screenshots of failing tests to it. Here I am running the group of test cases (Test Suite of 66 test cases). After running the test suite I found few failed tests with GDI+ error and were not captured as a screenshot. But when I run http://stackoverflow.com/questions/38903692/externalexception-a-generic-error-occurred-in-gdi them individually most of the failed cases (GDI+ error) were passing except few. Here is the code for creating a folder: TestExecutionStartTime = DateTime.Now; baseDirectory = AppDomain.CurrentDomain.BaseDirectory + @"\" + ConfigurationManager.AppSettings.GetValues("failedTests")[0]; Browser = ConfigurationManager.AppSettings["WebDriver"]; DirectoryInfo directory = new DirectoryInfo(baseDirectory); DirectoryInfo[] subdirs = directory.GetDirectories(); if (System.IO.Directory.GetDirectories(baseDirectory).Length == 0) { screenshotDirectory = baseDirectory + @"\" + (DateTime.Now.ToString("yyyy_MM_dd_hh_mm") + "_" + Browser); Directory.CreateDirectory(screenshotDirectory); } Here is the code for taking screenshot: public void takeScreenshot(string filename) { string fname = filename + ".jpg"; string screenshot = screenshotDirectory + @"\" + fname; Screenshot ss = ((ITakesScreenshot)WebDriver).GetScreenshot(); byte[] image = ss.AsByteArray; using (MemoryStream ms = new MemoryStream(image)) { Image i = Image.FromStream(ms); i.Save(screenshot); } I assume that the error is at this i.Save(screenshot) call, but I was not able to resolve it. c# selenium webpage-screenshot share|improve this question edited Aug 11 at 21:15 Laurel 3,95981540 asked Aug 11 at 18:27 mitikiri 92 so you just want to capture screenshots when a test fails and place them in subdirectory that's named with the date? –AntonB Aug 11 at 18:51 Which driver are you using? The GDI error is probably due to an empty image returned by the driver. You could retry to take the screenshot
have a write permission on some directory. For example, if you are trying to save the Image from the memory stream http://weblogs.asp.net/anasghanem/solving-quot-a-generic-error-occurred-in-gdi-quot-exception to the file system , you may get that error. I also faced that error when I was using Infragistics charts control , the control was trying to create a temporary http://www.codeproject.com/Questions/206755/A-generic-error-occurred-in-GDIplus chart in ChartImages folder and my application was not given the write permission. Please if you are using XP, make sure to add write permission for the aspnet account on a generic that folder. If you are using windows server (2003,2008) or Vista, make sure that add write permission for the Network service account. Hope it help some one. 23 Comments Na, _one_ of the possible errors could be the one, you described. The "Generic error" in fact is used in certain scenarios. It means "we were to lazy to write better error return a generic error code". This really sucks. Uwe - Saturday, February 28, 2009 8:44:55 PM Well, at least that's based on my experience and on the problems i faced. I know that there is many other causes of that problem,but that's what i know until this time. anas - Saturday, February 28, 2009 8:57:28 PM I think it's the most common error so permissions should always be checked first. SGWellens - Saturday, February 28, 2009 9:18:12 PM It might not be that you don't have write permissions, but a sharing violation might be in effect. Common scenario that this happens: 1) Read an image into a Bitmap object 2) Manipulate the bitmap 3) Wanting to write back the bitmap to overwrite the original image file you read in step 1. This can happen because the Bitmap implementation seems to be as lazy as possible. It can choose the just remember the path that was the source of the image bits (or even a handle to the opened file they came from). This then means your software has the original image file open, causing this p
Tips/Tricks Top Articles Beginner Articles Technical Blogs Posting/Update Guidelines Article Help Forum Article Competition Submit an article or tip Post your Blog quick answersQ&A Ask a Question View Unanswered Questions View All Questions... C# questions Linux questions ASP.NET questions SQL questions VB.NET questions discussionsforums All Message Boards... Application Lifecycle> Running a Business Sales / Marketing Collaboration / Beta Testing Work Issues Design and Architecture ASP.NET JavaScript C / C++ / MFC> ATL / WTL / STL Managed C++/CLI C# Free Tools Objective-C and Swift Database Hardware & Devices> System Admin Hosting and Servers Java .NET Framework Android iOS Mobile SharePoint Silverlight / WPF Visual Basic Web Development Site Bugs / Suggestions Spam and Abuse Watch features Competitions News The Insider Newsletter The Daily Build Newsletter Newsletter archive Surveys Product Showcase Research Library CodeProject Stuff communitylounge Who's Who Most Valuable Professionals The Lounge The Insider News The Weird & The Wonderful The Soapbox Press Releases Non-English Language > General Indian Topics General Chinese Topics help What is 'CodeProject'? General FAQ Ask a Question Bugs and Suggestions Article Help Forum Site Map Advertise with us About our Advertising Employment Opportunities About Us Ask a Question All Questions All Unanswered FAQ A generic error occurred in GDI+ Rate this: Please Sign up or sign in to vote. See more: C# I have looked around but nothing seemed to really match my problem. I am trying to save a picture from a direct link. Either as a gif or png depending on what is needed. Every time I try to save the file I get said error. public void SaveImage(String ID, string pokemonName, bool isShiny, ImageFormat imageFormat, bool isSprite = false) { Directory.CreateDirectory(@"C:\Users\Cardon\Documents\Pokemon\" + ID + " - " + pokemonName); var tmpImageFormat = (imageFormat == ImageFormat.Gif) ? "gif" : "png"; var url = (isSprite) ? "http://www.serebii.net/pokedex-bw/icon/" + ID + "." + tmpImageFormat : (isShiny) ? "http://www.serebii.net/Shiny/BW/" +