Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class JpegExtensions
- {
- public static Stream StripExif(Stream inStream, Stream outStream)
- {
- byte[] jpegHeader = new byte[2];
- jpegHeader[0] = (byte)inStream.ReadByte();
- jpegHeader[1] = (byte)inStream.ReadByte();
- if (jpegHeader[0] == 0xff && jpegHeader[1] == 0xd8) //check if it's a jpeg file
- {
- SkipHeader(inStream);
- }
- outStream.WriteByte(0xff);
- outStream.WriteByte(0xd8);
- int readCount;
- byte[] readBuffer = new byte[4096];
- while ((readCount = inStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
- outStream.Write(readBuffer, 0, readCount);
- return outStream;
- }
- private static void SkipHeader(Stream inStream)
- {
- byte[] header = new byte[2];
- header[0] = (byte)inStream.ReadByte();
- header[1] = (byte)inStream.ReadByte();
- while (header[0] == 0xff && (header[1] >= 0xe0 && header[1] <= 0xef))
- {
- int exifLength = inStream.ReadByte();
- exifLength = exifLength << 8;
- exifLength |= inStream.ReadByte();
- for (int i = 0; i < exifLength - 2; i++)
- {
- inStream.ReadByte();
- }
- header[0] = (byte)inStream.ReadByte();
- header[1] = (byte)inStream.ReadByte();
- }
- inStream.Position -= 2; //skip back two bytes
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement