gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:23:32 25 4
gpt4 key购买 nike

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

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

如有任何帮助,我们将不胜感激。

最佳答案

有一个 blog post here显示如何在不重新编码图像的情况下删除 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
}
}
}

关于c# - 在 Windows Phone 上编辑/删除 Exif 图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com