Note that there are some explanatory texts on larger screens.

plurals
  1. POFeedback on code to Serialize, Deserialize and Save Image
    text
    copied!<p>Here is my code to Serialize, Deserialize and Save an image to the file system. I have looked at many examples of serialization/deserialization and I just want to get some feedback as I am sure my code could be improved. Any feedback would be greatly appreciated. I know this is a common problem so hopefully this question will be a good resource for others in the future.</p> <p><strong>This is the revised code using recommendations:</strong></p> <pre><code> private void Form1_Load(object sender, EventArgs e) { RunTest(); } private void RunTest() { byte[] jpgba = ConvertFileToByteArray("D:\\Images\\Image01.jpg"); using (Image jpgimg = ConvertByteArrayToImage(jpgba)) { SaveImageToFileSystem(jpgimg, "D:\\Images\\Image01_Copy.jpg"); } byte[] pngba = ConvertFileToByteArray("D:\\Images\\Image02.png"); using (Image pngimg = ConvertByteArrayToImage(pngba)) { SaveImageToFileSystem(pngimg, "D:\\Images\\Image02_Copy.png"); } byte[] gifba = ConvertFileToByteArray("D:\\Images\\Image03.gif"); using (Image gifimg = ConvertByteArrayToImage(gifba)) { SaveImageToFileSystem(gifimg, "D:\\Images\\Image03_Copy.gif"); } MessageBox.Show("Test Complete"); this.Close(); } private static byte[] ConvertFileToByteArray(String FilePath) { return File.ReadAllBytes(FilePath); } private static Image ConvertByteArrayToImage(byte[] ImageByteArray) { using (MemoryStream ms = new MemoryStream(ImageByteArray)) { return Image.FromStream(ms); } } private static void SaveImageToFileSystem(Image ImageObject, string FilePath) { // ImageObject.Save(FilePath, ImageObject.RawFormat); // This method only works with .png files. // This method works with .jpg, .png and .gif // Need to copy image before saving. using (Image img = new Bitmap(ImageObject.Width, ImageObject.Height)) { using (Graphics tg = Graphics.FromImage(img)) { tg.DrawImage(ImageObject, 0, 0); } img.Save(FilePath, img.RawFormat); } return; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload