在Windows Phone上编辑/删除Exif图像数据

Jam*_*ndy 5 c# exif windows-phone windows-phone-8

我正在使用优秀的ExifLib从Windows Phone 8上的图像中提取Exif数据(http://www.codeproject.com/Articles/36342/ExifLib-A-Fast-Exif-Data-Extractor-for-NET-2 -0).但是,由于隐私限制,我需要能够从用户照片库导入的图像中删除GPS exif数据.

不幸的是我无法找到一种方法来轻松编辑或删除这些数据,我缺少的任何指针或库?

任何帮助将非常感激.

key*_*rdP 4

这里有一篇博客文章展示了如何删除 EXIF 数据而不重新编码图像。帖子中的代码

using System.IO;

namespace ExifRemover
{
    public class JpegPatcher
    {
        public Stream PatchAwayExif(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
            {
                SkipAppHeaderSection(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 void SkipAppHeaderSection(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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)