public void SaveBLFImage(Stream stream, BLFImageType imgType) { EndianIO nio = new EndianIO(stream, EndianType.BigEndian); nio.Open(); nio.Out.WriteAsciiString("_blf", 4); nio.Out.Write(0x30); nio.Out.Write((short)1); nio.Out.Write((short)2); nio.Out.Write((short)(-2)); nio.Out.Write(new byte[0x22]); nio.Out.WriteAsciiString("mapi", 4); MemoryStream stream2 = new MemoryStream(); if ((imgType == BLFImageType.BaseImage) | (imgType == BLFImageType.BaseImage)) { this.BLFImage.Save(stream2, ImageFormat.Jpeg); } else { this.BLFImage.Save(stream2, ImageFormat.Png); } byte[] buffer = stream2.ToArray(); stream2.Close(); nio.Out.Write((int)(buffer.Length + 20)); nio.Out.Write((short)1); nio.Out.Write((short)1); nio.Out.Write((int)imgType); nio.Out.Write(buffer.Length); nio.Out.Write(buffer); int position = (int)nio.Stream.Position; nio.Out.WriteAsciiString("_eof", 4); nio.Out.Write(0x111); nio.Out.Write(0x10001); nio.Out.Write(position); nio.Out.Write((byte)3); nio.Out.Write(new byte[0x100]); nio.Close(); }
public void SaveBLFImage(Stream stream, BLFImageType imgType) { //Create our instance of our IO EndianIO IO = new EndianIO(stream, EndianType.BigEndian); //Open our IO IO.Open(); //Write our BLF Header #region BLF Header //Write our _blf string IO.Out.WriteAsciiString("_blf", 0x4); //Write the headersize IO.Out.Write(48); //Write the unknown values IO.Out.Write((short)1); IO.Out.Write((short)2); IO.Out.Write((short)-2); //Write the whitespace of blank values IO.Out.Write(new byte[0x22]); //Write our ending portion IO.Out.WriteAsciiString("mapi", 0x4); //Create our image stream. MemoryStream imageStream = new MemoryStream(); //Write our image to the stream if (imgType == BLFImageType.BaseImage | imgType == BLFImageType.Sm) { BLFImage.Save(imageStream, ImageFormat.Jpeg); } else { BLFImage.Save(imageStream, ImageFormat.Png); } //Get a useable byte array from it byte[] imageData = imageStream.ToArray(); //Close our imageStream imageStream.Close(); //Write imageData.length+20 IO.Out.Write(imageData.Length + 20); IO.Out.Write((short)1); IO.Out.Write((short)1); //Write our enum for image type. //JFIF = 0 //PNG = 1 IO.Out.Write((int)imgType); //Write our content File Size(image length) IO.Out.Write(imageData.Length); #endregion //Write our image data IO.Out.Write(imageData); //Write our End of File #region EOF Footer //get our current location for a size int totalSize = (int)IO.Stream.Position; //Write our EOF Data IO.Out.WriteAsciiString("_eof", 4); IO.Out.Write(0x111); IO.Out.Write(0x10001); IO.Out.Write(totalSize); IO.Out.Write((byte)0x03); IO.Out.Write(new byte[0x100]); #endregion //Close our IO IO.Close(); }