Willcode4cash icon

Strip EXIF from JPG

Willcode4cash | PRO | 05/17/19 06:19:26 AM UTC | 0 ⭐ | 316 👁️ | Never ⏰ | []
C# |

1.2 KB

|

None

|

0 👍

/

0 👎

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
    }
}

Comments