Sdolby Ответов: 3

Vb.net запись в метаданные изображений для тегов.


Здравствуйте, я пытаюсь написать в изображения ключевые слова/теги с помощью ExifWorks. Но он не будет писать, ниже мой код, и я не знаю, что не так.
Public Class EXIFtest



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim text2 As String = TextBox2.Text
        Dim text3 As String = Replace(text2, ".jpg", "")
        Dim ef As New ExifWorks(text2)
        Dim imgWithExif As Image = ef._Image
        ef.Keyword = TextBox1.Text
        imgWithExif.Save(text3 + "TAGGED.jpg")
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click


        TextBox2.Text = ("C:\Users\Simon\Music\Pictures\Exif Tests\DSC_1847.jpg")
        PictureBox2.ImageLocation = TextBox2.Text



    End Sub

    Private Sub EXIFtest_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        TextBox2.Text = PictureBox2.ImageLocation
    End Sub
End Class

Это основная программа

Я добавил к ExifWorks следующее

Public Property Keyword() As String
       Get
           Return Me.GetPropertyString(TagNames.Keyword)
       End Get
       Set(ByVal Value As String)
           Try
               Me.SetPropertyString(TagNames.Keyword, Value)
           Catch ex As Exception
           End Try
       End Set
   End Property

SB.Append("\n\tKeyword:   " & Me.Keyword)

и
Public Enum TagNames As Integer
       ExifIFD = &H8769
       GpsIFD = &H8825
       NewSubfileType = &HFE
       SubfileType = &HFF
       ImageWidth = &H100
       ImageHeight = &H101
       BitsPerSample = &H102
       Compression = &H103
       PhotometricInterp = &H106
       ThreshHolding = &H107
       CellWidth = &H108
       CellHeight = &H109
       FillOrder = &H10A
       Keyword = &H9C9E


Я пытаюсь добавить к свойству изображения теги. Но это не работает, никаких предложений


Imports Microsoft.ImageMetadata
Imports Microsoft.PhotoToolboxFoundation

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim text2 As String = TextBox2.Text
        Try 'This seems to work. look at the image noted in img_path.
            Dim img_path As String = "C:\Users\Simon\Music\Pictures\Exif Tests\DSC_1847.jpg"
            Dim p As MetadataPolicy = (New MetadataPolicyManager()).loadPolicy("C:\Users\Simon\Documents\Visual Studio 2010\Projects\EXIFtest\EXIFtest\Microsoft.PhotoToolboxFoundation.ToolboxPolicy.xml")
            Dim imgProxy As ImageFileProxy = New ImageFileProxy(img_path, p)
            Dim desc As Object = imgProxy.Data(p.getTagIndex("Description"))
            imgProxy.Data(p.getTagIndex("Description")) = "This is a test description for the jpg!"
            TextBox1.Text = ("Description: " + desc.ToString())
            imgProxy.commit()
        Catch ex As Exception
            MessageBox.Show(ex.Message, ErrorToString)
        End Try

    End Sub


Что я уже пробовал:

Я попытался добавить шестнадцатеричный код и идентификаторы к исходному классу.

3 Ответов

Рейтинг:
6

Sergey Alexandrovich Kryukov

Изображение, которое я скачал из вашего источника, немного удивило меня. Пожалуйста, смотрите мой комментарий к решению 1.

Это еще одно предложение: пожалуйста, ознакомьтесь с этой библиотекой с открытым исходным кодом с поддержкой Exif, IPTC, XMP и ICC: Гитхаб — drewnoakes/метаданные-экстрактор-dotnet ограничителя: выдержки в EXIF метаданных IPTC, XMP, МТП и другие метаданные изображения и видеофайлы .

—СА


Рейтинг:
2

Sdolby

VB.NET извлечение метатегов из изображения-переполнение стека[^]
Объяснил это красиво, и моя первоначальная идея использования ExifWorks была в правильном направлении.
Спасибо Сергею за то, что помог мне найти правильный вопрос, который я пытаюсь задать. :)


Рейтинг:
14

Sergey Alexandrovich Kryukov

Пожалуйста, смотрите эту статью CodeProject: ExifLibrary для .NET[^].

—СА


Sdolby

Я посмотрел, но это, кажется, не говорит о конкретной части, на которую я смотрю.
Я свяжу фотографию, чтобы показать вам, что я пытаюсь отредактировать.
Фотография[^]

Sergey Alexandrovich Kryukov

Вы имеете в виду, что не нашли поддержки ключевых слов/тегов Exif?
—СА

Sergey Alexandrovich Kryukov

Вот в чем дело: я взял одно изображение сверху в качестве образца и исследовал его.
К моему удивлению, я вообще не нашел Exif-информации (никогда не видел таких вещей; она была стерта перед публикацией?!)
В нем есть только метаданные IPTC, но никакие ключевые слова/категории не заполняются.
Вы уверены, что вам нужна поддержка Exif, а не IPTC?
См. также Решение 3.
—СА

Sdolby

Да, я не нашел поддержки для ключевых слов/тегов
Я поиграю сегодня и завтра и посмотрю, что найду. Спасибо. :)

Sergey Alexandrovich Kryukov

Отлично. Добро пожаловать.
—СА

Sdolby

Ниже приведена ссылка на изображение того, что я пробовал до сих пор.Это должно быть довольно просто, чтобы увидеть, что происходит.
Однако это не работает, есть идеи?
http://imgur.com/vSI5ZKJ
Спасибо
Саймон

Sergey Alexandrovich Kryukov

Вы посылаете мне код в виде изображения? Как же мне его прочесть? Пожалуйста, не надо. Если вы хотите, чтобы я посмотрел на какой-то код, пожалуйста, отформатируйте его правильно, как HTML, и опубликуйте с помощью "улучшить вопрос".
—СА

Sdolby

Я пытался послать вам код и проблему. Но я добавил его. :)

Sergey Alexandrovich Kryukov

В чем же проблема?
—СА

Sdolby

Ошибка заключается в следующем:
Не удалось загрузить файл или сборку "Interop.PptNative, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" или одну из ее зависимостей. Система не может найти указанный файл.
Я ссылался на него в программе, поэтому не слишком уверен в том, что не происходит.

Sergey Alexandrovich Kryukov

Это происходит потому, что на эту сборку нет ссылок или даже она отсутствует...
Он принадлежит Microsoft Pro Photo Tools, который вы, вероятно, не устанавливали. Или не удалось сослаться.
Я бы не стал полагаться на инструменты Microsoft. Microsoft заметно слаба в поддержке различных медиа-форматов. Я бы использовал сторонние программы с полным исходным кодом. Вот почему я искал для вас продукты с открытым исходным кодом.
—СА