我试图理解位图或图像的这两种方法。一个存在.SetPropertyItem()
,另一个存在.GetPropertyItem()
。
我对文档说我要设置属性项的方式感到完全困惑。
从Microsoft 文档中,它指出我们应该通过图像中已经存在的属性项的 id 选择一个属性项,给该属性项一个新的 ID,设置属性,然后使用检索到的属性设置图像属性项物品。
这太奇怪了,但真正让我明白的是,我们不能只将属性项的 id 设置为任何我们必须将属性项 id 设置为属性项 id 列表中已经存在的 id。
令人困惑的是,我正在使用一个已经通过其他方式设置的属性并覆盖它的属性,然后使用属性 ID 列表中的其他现有 ID 将其添加回图像。
我在这里想念什么?有没有办法简单地创建一个新的 PropertyItem,然后将具有任何给定 ID 的属性项添加到图像或位图中?
这是我正在谈论的一个例子。20752 的 ID 是图像已经具有的属性项,当我设置 PropertyItem 的 ID 时,20753 也是图像具有的 ID。
这将成功设置属性项。
private void Form1_Load(object sender, EventArgs e)
{
string path = Environment.CurrentDirectory + @"\sample.png";
Image image = Image.FromFile(path);
PropertyItem pi = image.GetPropertyItem(20752);
pi.Id = 20753;
pi.Type = 1;
pi.Value = Encoding.UTF8.GetBytes("MyImageInfo");
pi.Len = pi.Value.Length;
image.SetPropertyItem(pi);
image.Save(Environment.CurrentDirectory + @"\sample2.png");
}
这将成功检索 PropertyItem。
private void Form1_Load(object sender, EventArgs e)
{
string path = Environment.CurrentDirectory + @"\sample.png";
Image image = Image.FromFile(path);
PropertyItem propItem = image.GetPropertyItem(20753);
}
有没有一种方法可以让我用我自己的 ID 创建一个新的 PropertyItem 而不必做那些奇怪的事情?或者我在这里错过了什么?
或者,为图像或位图设置其他类型的属性的更好方法是什么?我正在寻找一种基本的方法来保存信息并在以后检索它。
我在这里做错了什么?