I want to get the byte[] from an image file.
why does the 2 byte arrays have a different length? it is the same file.Code:byte[] fromFile; using (FileStream fs = new FileStream("myImage.jpg", System.IO.FileMode.Open, System.IO.FileAccess.Read)) { fromFile= new byte[fs.Length]; fs.Read(fromFile, 0, Convert.ToInt32(fs.Length)); } // fromFile has a length of 5308 using (MemoryStream ms = new MemoryStream()) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo _codecInfo = null; foreach (ImageCodecInfo codec in codecs) { if (codec.MimeType == "image/jpeg") _codecInfo = codec; } byte[] fromImage; using (Image img = Image.FromFile("myImage.jpg")) { img.Save(ms, ImageFormat.Jpeg); fromImage = ms.ToArray(); } } //fromImage has a length of 5835
I also tried
and some other encoderParameters, but they all give a different lengthCode:using (MemoryStream ms = new MemoryStream()) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo _codecInfo = null; foreach (ImageCodecInfo codec in codecs) { if (codec.MimeType == "image/jpeg") _codecInfo = codec; } using (EncoderParameters _encoderParameters = new EncoderParameters()) { _encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (long)100); img.Save(ms, _codecInfo, _encoderParameters); fromImage = ms.ToArray(); }




Reply With Quote