// // Sets specified property in raw form // // Property ID // Raw data // EXIF data type // Is recommended to use typed methods (like etc.) instead, when possible. // // [altair] 12.6.2004 Created // public void SetProperty(Int32 PID, byte[] Data, ExifDataTypes Type) { System.Drawing.Imaging.PropertyItem P = this._Image.PropertyItems[0]; P.Id = PID; P.Value = Data; P.Type = (Int16)Type; P.Len = Data.Length; this._Image.SetPropertyItem(P); }
/// <summary> /// Sets specified propery in raw form. /// </summary> public void SetProperty(TagNames pid, byte[] data, ExifDataTypes type) { var p = CreateInstance <PropertyItem>(); p.Id = (int)pid; p.Value = data; p.Type = (short)type; p.Len = data.Length; _image.SetPropertyItem(p); }
/// <summary> /// Sets the property. /// </summary> /// <param name="propertyId">The property identifier.</param> /// <param name="data">The data.</param> /// <param name="type">The type.</param> protected void SetProperty(ExifProperty propertyId, byte[] data, ExifDataTypes type) { try { var property = this._image.PropertyItems[0]; property.Id = (int)propertyId; property.Value = data; property.Type = (Int16)type; property.Len = data.Length; this._image.SetPropertyItem(property); } catch (Exception ex) { throw ex.Handle(new { propertyId, type }); } }
public void ExifTypeUndefined() { // This image contains an 802 byte EXIF profile // It has a tag with an index offset of 18,481,152 bytes (overrunning the data) using Image <Rgba32> image = TestFile.Create(TestImages.Jpeg.Progressive.Bad.ExifUndefType).CreateRgba32Image(); Assert.NotNull(image); ExifProfile profile = image.Metadata.ExifProfile; Assert.NotNull(profile); foreach (ExifValue value in profile.Values) { if (value.DataType == ExifDataType.Undefined) { Assert.True(value.IsArray); Assert.Equal(4U, 4 * ExifDataTypes.GetSize(value.DataType)); } } }