Dim xmp As New Chilkat.Xmp() Dim success As Boolean
Dim xml As Chilkat.Xml xml = xmp.NewXmp() xmp.AddSimpleStr(xml, "photoshop:Headline", "This is the new headline")
success = xmp.LoadAppFile("c:\aaa.jpg")
xmp.Append(xml) xmp.SaveAppFile("c:\xxx.jpg")
上記コードを書くと、以下の内容がJpegファイルの先頭部に追加される。
<x:xmpmeta xmlns:x="adobe:ns:meta/"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> <photoshop:Headline>This is the new headline</photoshop:Headline> </rdf:Description> </rdf:RDF> </x:xmpmeta>
Using oXmp As Xmp = Xmp.FromFile(jpegFilePath1, XmpFileMode.ReadWrite) TextBox1.Text = oXmp.Dump().Replace(vbLf, vbNewLine)
Dim xBasic As New XmpBasic(oXmp) xBasic.Identifier.Clear() xBasic.Identifier.Add(New XmpBasic.QualifiedIdentifier("Identifier A", Nothing)) xBasic.Identifier.Add(New XmpBasic.QualifiedIdentifier("Identifier B", "Scheme B")) xBasic.MetadataDate = Now xBasic.Rating = 5 xBasic.Thumbnails.Clear()
Dim dc As New DublinCore(oXmp) dc.Subject.Clear() dc.Subject.Add("あいうえお") dc.Subject.Add("かきくけこ") oXmp.Save() End Using
'If XmpCore.Initialize() Then ' If XmpFiles.Initialize() Then ' Dim xfFlags = OpenFlags.OpenForRead Or OpenFlags.OpenForUpdate Or OpenFlags.OpenOnlyXmp ' Using files As New XmpFiles(jpegFilePath, FileFormat.Jpeg, xfFlags) ' Using core As New XmpCore() ' If files.GetXmp(core) Then ' Dim dcNS1 As String = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" ' Dim dcNS2 As String = "http://purl.org/dc/elements/1.1/" ' Dim dnNS3 As String = "http://ns.sanyo.com/xmp/1.0/" ' ' ' 'If core.GetProperty(… ' 'Using iter As New XmpIterator(core, … ' ' ' End If ' End Using ' End Using ' XmpFiles.Terminate() ' End If ' XmpCore.Terminate() 'End If
' Load the image Dim dib As FIBITMAP = New FIBITMAP() dib = FreeImage.LoadEx("c:\111.jpg")
If (dib.IsNull) Then MessageBox.Show("Failed to load image.") Else
'Dim tag As FreeImageAPI.Metadata.MetadataTag = New MetadataTag(FREE_IMAGE_MDMODEL.FIMD_COMMENTS) 'tag.SetValue(System.Text.Encoding.ASCII.GetBytes("hogeo")) 'tag.Key = 270 'tag.AddToImage(dib) 'FreeImage.SetMetadata(FREE_IMAGE_MDMODEL.FIMD_XMP, dib, "FIMD_XMP", tag)
Dim FTag As New Metadata.MetadataTag(FREE_IMAGE_MDMODEL.FIMD_COMMENTS) FTag.Key = "HogeDescription" FTag.ID = 270 FTag.Value = System.Text.Encoding.ASCII.GetBytes("hogeo") FTag.AddToImage(dib)
分類:[.NET]
2014/11/26(Wed) 16:37:57 編集(投稿者)
2014/11/19(Wed) 02:21:25 編集(投稿者)
2014/11/19(Wed) 02:21:16 編集(投稿者)
分類:[VB.NET/VB2005 以降]
皆様、お世話になります。
現在、JPGファイルについているXMPタグを追加したいと思っています。
以下のXMPメタにhogehogeCISを1つ追加したい(<hogehogeCIS:xxxxx>)のですがどのように行えば宜しいでしょうか?
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:Description rdf:about=""
xmlns:hogehogeCIS="http://ns.sanyo.com/xmp/1.0/">
<hogehogeCIS:Objective>4</hogehogeCIS:Objective>
<hogehogeCIS:FieldWidth>999</hogehogeCIS:FieldWidth>
<hogehogeCIS:FieldHeight>333</hogehogeCIS:FieldHeight>
<hogehogeCIS:Magnification>333</hogehogeCIS:Magnification>
<hogehogeCIS:ImagingModuleName>hogehoge</hogehogeCIS:ImagingModuleName>
<hogehogeCIS:CameraSerialNo>12345</hogehogeCIS:CameraSerialNo>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
参考としてSamle.jpgファイルを添付致します。Jpgファイルを秀丸などのエディタで開いていただくと、ヘッダー部に上記と似たコードが表示されます。<hogehogeCIS:Objective>4</hogehogeCIS:Objective>の下に<hogehogeCIS:hogehoge>hoge</hogehogeCIS:hogehoge>を入れたいです。
色々と自分で調査したのですが、以下のことしか解りませんでした。
・JavaやC++だと容易に出来そうだが開発言語がVB.netなので実装できない。
・VB.netでもWindows Imaging Component で出来るようだが、DLLを見つける事が出来ない。
別に他の方法で処理が行えればそれで問題ないのですが、その他方法はございますでしょうか?
例えば、streamReaderでJpgファイルを読み込み、その内容をStreamWriterで書き込むなど。
(恐らくJpgファイルなのでWriteするときに出来ないと思いますが。。。)
お手数ですがよろしくお願い致します。