使用medata数据wpf c#将位图保存为png [重复]

Posted

技术标签:

【中文标题】使用medata数据wpf c#将位图保存为png [重复]【英文标题】:Save bitmap to png with medata data wpf c# [duplicate] 【发布时间】:2021-04-06 14:51:26 【问题描述】:

我需要使用 wpf c# 中的版权等 medata 将位图保存为 jpg。

         var  handle = BitmapImage2Bitmap(currentimage).GetHbitmap();



        System.Drawing.Image img = System.Drawing.Image.FromHbitmap(handle);
        System.Drawing.Imaging.PropertyItem prop = img.PropertyItems[0];
        SetProperty(ref prop, 33432, "Copyright");
        img.SetPropertyItem(prop);

        


        img.Save(@"C:\images\test.jpg");

我已经尝试使用上面的代码,但它说索引超出了数组区域。

【问题讨论】:

以后请先阅读文档 System.Drawing.Image 是 WinForms,而不是 WPF。 【参考方案1】:
var prop = img.GetPropertyItem(0x503B);
prop.Value = Encoding.Ascii.GetBytes("copyright name");
prop.Len = prop.Value.Length;
img.SetPropertyItem(prop);

值 0x503B 来自这里: PropertyItem.Id Property

【讨论】:

以上是关于使用medata数据wpf c#将位图保存为png [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 WPF 画布保存到文件而不损失质量(不使用位图作为中介)

位图保存 jpeg 失败但 png 可以,因为 comments 属性

在 Delphi 2007 中将具有透明度的位图保存为 PNG

将索引 BMP 保存为 PNG 不会在 Mac 上保存透明度

将位图保存为任何格式

C 缓冲区到 C# 位图对象