/// <summary> /// Loads a <see cref="FieldImage"/> from a <see cref="LightFieldComponent"/> and metadata. /// </summary> /// <param name="frame">The raw frame component.</param> /// <param name="frameMetadata">The raw frame metadata.</param> /// <param name="privateMetadata">The private metadata.</param> /// <returns>a new instance of the <see cref="FieldImage"/> class.</returns> public static FieldImage From(LightFieldComponent frame, Json.FrameMetadata frameMetadata, Json.FrameMetadata privateMetadata = null) { if (frame == null) { throw new ArgumentNullException("frame"); } return(new FieldImage(frame, frameMetadata, privateMetadata)); }
private FieldImage(LightFieldComponent frame, Json.FrameMetadata frameMetadata, Json.FrameMetadata privateMetadata) { _metadata = frameMetadata; _privateMetadata = privateMetadata; _frameData = frame.Data; _width = (int)_metadata.Image.Width; _height = (int)_metadata.Image.Height; }
/// <summary> /// Initializes a new instance of the <see cref="RawImage"/> class from a <see cref="LightFieldComponent"/>. /// </summary> /// <param name="frame">The raw frame component.</param> /// <param name="imageMetadata">The metadata with packing parameters.</param> public RawImage(LightFieldComponent frame, Json.FrameImage imageMetadata) { if (frame == null) throw new ArgumentNullException("frame"); if (frame.Length < 1) throw new ArgumentException("Component does not contain any data.", "frame"); VerifyMetadata(imageMetadata, out _width, out _height); _data = Unpack(frame.Data, _width, _height); }
/// <summary> /// Loads a <see cref="FieldImage"/> from a <see cref="LightFieldPackage"/>. /// </summary> /// <param name="package">The package to load the field image from.</param> /// <returns>a new instance of the <see cref="FieldImage"/> class.</returns> public static FieldImage From(LightFieldPackage package) { if (package == null) { throw new ArgumentNullException("package"); } LightFieldComponent metadataComponent = package.GetMetadata().FirstOrDefault(); if (metadataComponent == null) { throw new ArgumentException("The package does not contain any metadata.", "package"); } Json.Master master = new Json.Master(); try { master.LoadFromJson(metadataComponent.GetDataAsString()); } catch (FormatException e) { throw new ArgumentException("The package contains invalid metadata.", e); } if (master.Picture == null) { throw new ArgumentException("The package does not contain required metadata.", "package"); } PictureMetadata pictureMetadata = new PictureMetadata(master.Picture); LightFieldComponent frameMetadataComponent = package.GetComponent(pictureMetadata.Frame.MetadataReference).FirstOrDefault(); if (frameMetadataComponent == null) { throw new ArgumentException("The package does not contain any frame metadata.", "package"); } Json.FrameMetadata frameMetadata = new Json.FrameMetadata(); try { frameMetadata.LoadFromJson(frameMetadataComponent.GetDataAsString()); } catch (FormatException e) { throw new ArgumentException("The package contains invalid metadata.", e); } Json.FrameMetadata privateMetadata = new Json.FrameMetadata(); LightFieldComponent privateMetadataComponent = package.GetComponent(pictureMetadata.Frame.PrivateMetadataReference).FirstOrDefault(); if (privateMetadataComponent != null) { try { privateMetadata.LoadFromJson(frameMetadataComponent.GetDataAsString()); } catch (FormatException) { } } LightFieldComponent frameComponent = package.GetComponent(pictureMetadata.Frame.ImageReference).FirstOrDefault(); if (frameComponent == null) { throw new ArgumentException("The package does not contain the frame data.", "package"); } return(new FieldImage(frameComponent, frameMetadata, privateMetadata)); }