Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }