C# 写入图片元数据

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();
        }


猜你喜欢

转载自blog.csdn.net/beikepang/article/details/79043298
今日推荐