Share via


"Parameter is not valid" - new Bitmap()

Question

Monday, April 21, 2008 9:45 AM

Hello, I'm trying to make an Image from a file...

I am positive that this code worked a few compiles earlier, and having not changed this code I cannot see why it would suddenly stop working... suffice to say it has...

private void ofdImage_FileOk(object sender, CancelEventArgs e)

        {

            foreach (string fn in ofdImage.FileNames){

                if ((fn.EndsWith("jpg")) || (fn.EndsWith("jpeg")))

                {

                    addImgToRepo(fn);

                }

            }

        }

        private void addImgToRepo(string fn)

        {

            Image img = new System.Drawing.Bitmap(fn);

....

}

The code breaks on Image img = ... saying "The Parameter is not valid.". 

For example, I open C:\000.jpg and this gives the string fn = "C:\000.jpg". This file exists!

If anyone can shed any light on this I'd be most appreciative! It makes no sense to me!

All replies (4)

Tuesday, April 22, 2008 8:31 AM âś…Answered | 1 vote

Hi,

 

The "Parameter is not valid" comes out because the file is and empty file that have 0 byte. 

 

You can use Image.Save() to save a picture into the file.

 

Code Snippet

             string imgPath = @"C:\test3.jpg";

            Image img = new Bitmap(imgPath);

            img.Save(@"C:\test3_copy.jpg", ImageFormat.Jpeg);

 

 

 If you wanna use File.copy(), just do as following.

 

Code Snippet

            string path = @"C:\test3.jpg";

            string path4 = @"C:\test4.jpg";

            try

            {

                // Ensure that the target does not exist.

                File.Delete(path4);

                // Copy the file.

                File.Copy(path, path4);

                MessageBox.Show(path+" has copied to "+ path4);

            }

 

 

 

For more about File.Copy(), please read the msdn File Class.

 

Wishes.

 


Monday, April 21, 2008 9:54 AM

Turns out I had somehow written over the original files that I was using to test with a file of 0 bytes... clever!

Incidentally, that was because I was trying to copy an image using File.Copy()... from an example piece of code... it just wrote 0 bytes! Odd?


Monday, September 15, 2008 4:59 PM

Hello,

I have a very similar issue, except that the file is 250KB.  It exists, the path is fine, but for some reason it also crashes on the

Bitmap bmp = new Bitmap(fileName); 

What could be the reason?  This same line of code worked for hundreds of other pictures?! :s

Thanks,

Alain


Monday, September 15, 2008 5:27 PM

I've tried using an "Image" object instead and it crashes again, for the same file, but this time I get an "Out of Memory" exception.  Here is the full code involving my img object (part of huge foreach loop):

// After x amount of successful passes, it finally crashes, with a valid file that can be viewed
without any issues in IrfanView (Windows Picture and Fax viewer cannot show it, but does
not crash; just says "Preview not available").

        Image img = System.Drawing.Bitmap.FromFile(fi.FullName);
        string resize400x300; 
        string resize150x113; 
 
        if (img.Height >= img.Width) 
                resize400x300 = "300,400"; 
         resize150x113 = "113,150"; 
        } 
        else 
                resize400x300 = "400,300"; 
         resize150x113 = "150,113"; 
}

img.Dispose(); // Release the memory.


Any Ideas?


Thanks,

Alain