您的位置:首页 > 编程语言 > C#

C# 写入图片元数据

2018-01-12 13:59 183 查看
Tiff图片元数据写入并保存

/// <summary>
/// 通过解码器与编码器写入元数据
/// </summary>
/// <param name="inputPath">原图片全路径</param>
/// <param name="outputPath">新图片全路径</param>
/// <param name="comment">内容</param>
/// <returns>带有元数据的内存流</returns>
public void DecoderAndEncoderSaveTif(string inputPath, string outputPath, string comment)
{
var src = inputPath;

var bitmapEncoder = new TiffBitmapEncoder();

FileStream stream = new FileStream(inputPath, FileMode.Open);

byte[] bytes = new byte[stream.Length];

stream.Read(bytes, 0, bytes.Length);

stream.Close();

MemoryStream ms = new MemoryStream(bytes, true);

var bitmapDecoder = new TiffBitmapDecoder(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);

var frame = bitmapDecoder.Frames[0];

var metadata = (BitmapMetadata)frame.Metadata.Clone();

metadata.SetQuery("/ifd/{uint=269}", comment);

var newFrame = BitmapFrame.Create(frame, frame.Thumbnail, metadata, frame.ColorContexts);

bitmapEncoder.Frames.Add(newFrame);

MemoryStream msnew = new MemoryStream();

bitmapEncoder.Save(msnew);

Image image = Image.FromStream(msnew);

image.Save(outputPath);

ms.Close();

msnew.Close();
}Jpg图片元数据写入并保存
public void DecoderAndEncoderSaveJpg(string inputPath, string outputPath, string comment)
{
FileStream stream = new FileStream(inputPath, FileMode.Open);

byte[] bytes = new byte[stream.Length];

stream.Read(bytes, 0, bytes.Length);

stream.Close();

MemoryStream ms = new MemoryStream(bytes, true);

BitmapDecoder decoder = new JpegBitmapDecoder(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);

var frame = decoder.Frames[0];

var metadata = (BitmapMetadata)frame.Metadata.Clone();

object obj = metadata.GetQuery("/app1/ifd/exif:{uint=269}");

metadata.SetQuery("/app1/ifd/exif:{uint=269}", comment);

var newFrame = BitmapFrame.Create(frame, frame.Thumbnail, metadata, frame.ColorContexts);

var bitmapEncoder = new JpegBitmapEncoder();

bitmapEncoder.Frames.Add(newFrame);

MemoryStream msnew = new MemoryStream();

bitmapEncoder.Save(msnew);

Image image = Image.FromStream(msnew);

image.Save(outputPath);

ms.Close();

msnew.Close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息