Ejemplo n.º 1
0
        public static bool SaveXmpSidecar(this TagLib.Image.File file, TagLib.File.IFileAbstraction resource)
        {
            var xmp_tag = file.GetTag(TagLib.TagTypes.XMP, false) as XmpTag;

            if (xmp_tag == null)
            {
                // TODO: Delete File
                return(true);
            }

            var xmp = xmp_tag.Render();

            try {
                using (var stream = resource.WriteStream) {
                    stream.SetLength(0);
                    using (var writer = new StreamWriter(stream)) {
                        writer.Write(xmp);
                    }
                    resource.CloseStream(stream);
                }
            } catch (Exception e) {
                Log.DebugFormat($"Sidecar cannot be saved: {resource.Name}");
                Log.DebugException(e);
                return(false);
            }

            return(true);
        }