using System.Collections;
using System.Drawing.Imaging;
public static void Main()
Console.WriteLine("Image Magic Numbers");
Console.WriteLine("Loaading image from url, save to disk, convert to Image object and show size ");
public static void Test1()
var url = "https://raw.githubusercontent.com/moh-hassan/Images/master/kodim03.png";
System.Drawing.Image img = null;
WebClient wc = new WebClient();
using (MemoryStream stream = new MemoryStream(wc.DownloadData(url)))
Console.WriteLine("Raw bytes from Url Stream: {0}", stream.Length);
DownloadFile(new Uri( url), "temp.png");
long fileSize = new FileInfo("temp.png").Length;
Console.WriteLine("file downloaded and saved to disk, size: {0}",fileSize);
public static void ImageInfo(Image image)
using (MemoryStream stream = new MemoryStream())
image.Save(stream, ImageFormat.Png);
imageBytes = new byte[stream.Length];
imageBytes = stream.ToArray();
Console.WriteLine("image read from disk to memorystream as RawFormat used for metadata extract, size {0}", imageBytes.Length);
Console.WriteLine("Image.FromStream to byteArray size {0} ", ImageToByteArray(image).Length );
Byte[] result = (Byte[])new ImageConverter().ConvertTo(image, typeof(byte[]));
Console.WriteLine("ImageConverter().ConvertTo(img,byte[]) size {0} ", result.Length );
public static void ImageInfo(Stream stream2)
var image = System.Drawing.Image.FromStream(stream2);
using (MemoryStream stream = new MemoryStream())
image.Save(stream, ImageFormat.Png);
imageBytes = new byte[stream.Length];
imageBytes = stream.ToArray();
Console.WriteLine("stream -> image-> memorystream -> imagbytes, for metadata extract, size {0}", imageBytes.Length);
public static void DownloadFile(Uri address, string filePath)
using (var client = new WebClient())
using (var stream = client.OpenRead(address))
using (var file = File.Create(filePath))
var buffer = new byte[4096];
while ((bytesReceived = stream.Read(buffer, 0, buffer.Length)) != 0)
file.Write(buffer, 0, bytesReceived);
var readAllBytes = File.ReadAllBytes("temp.png");
Console.WriteLine("File.ReadAllBytes from disk , size :{0}", readAllBytes.Length);
public static byte[] ImageToByteArray( Image image)
Byte[] result = (Byte[])new ImageConverter().ConvertTo(image, typeof(byte[]));