C#为图像添加额外的属性/信息

时间:2017-09-26 07:51:52

标签: c# wpf image

我想为图片添加额外的属性或信息。 我尝试使用一个新的类来获取图像属性,我只是添加一个,但我不知道如何做到这一点。

此外,我无法使用已经在使用的属性“Tag”,并且无法覆盖

public partial class myImage : System.Windows.Controls.Image
{
        //? 
}

3 个答案:

答案 0 :(得分:0)

向从Image派生的类添加属性如下所示:

public class MyImage : Image
{
    public string AdditionalInfoProperty { get; set; }
}

您还可以创建一个包含ImageSource对象的属性:

public class MyImage
{
    public ImageSource Image { get; set; }
    public string AdditionalInfoProperty { get; set; }
}

然后在你的xaml中你会像这样使用它,假设DataContext拥有MyImage类型的对象。

<Image Source="{Binding Image}"/>
<TextBlock Text="{Binding AdditionalInfoProperty}"/>

答案 1 :(得分:0)

获取或设置一个表示图像作者的值。

public System.Collections.ObjectModel.ReadOnlyCollection<string> Author { get; set; }

下面的代码示例演示如何通过使用BitmapMetadata类的友好属性将元数据写入位图图像。

FileStream stream3 = new FileStream( "image2.tif", FileMode.Create );
BitmapMetadata myBitmapMetadata = new BitmapMetadata( "tiff" );
TiffBitmapEncoder encoder3 = new TiffBitmapEncoder();
myBitmapMetadata.ApplicationName = "Microsoft Digital Image Suite 10";
myBitmapMetadata.Author = new ReadOnlyCollection<string>( 
    new List<string>() { "Mehdi Daustany" } );
myBitmapMetadata.CameraManufacturer = "Tailspin Toys";
myBitmapMetadata.CameraModel = "TT23";
myBitmapMetadata.Comment = "Nice Picture";
myBitmapMetadata.Copyright = "2010";
myBitmapMetadata.DateTaken = "5/23/2010";
myBitmapMetadata.Keywords = new ReadOnlyCollection<string>( 
    new List<string>() { "Mehdi", "Daustany" } );
myBitmapMetadata.Rating = 5;
myBitmapMetadata.Subject = "Mehdi";
myBitmapMetadata.Title = "Mehdi's photo";

// Create a new frame that is identical to the one 
// from the original image, except for the new metadata. 
encoder3.Frames.Add( 
    BitmapFrame.Create( 
    decoder2.Frames[0], 
    decoder2.Frames[0].Thumbnail, 
    myBitmapMetadata, 
    decoder2.Frames[0].ColorContexts ) );

encoder3.Save( stream3 );
stream3.Close();

答案 2 :(得分:-1)

考虑你有一张图片

Image img = Image.FromFile("C:\\temp\\smth\\smth.jpg");

使用系统绘图获取propertyitem

System.Drawing.Imaging.PropertyItem prop = img.PropertyItems[0];

设置信息

SetProperty(ref prop, 33432, "Test Info...");
img.SetPropertyItem(prop);