VB.NET changement de nom du Fichier et Retagging / Modifier les Métadonnées de l'Image / Meta Tags

Clarifiration:

Comment puis-je Modifier et Enregistrer l'Image EXIF /Métadonnées /FileInfo sans l'aide d'une DLL externe?

Projet:

Je suis en train de construire une application pour une utilisation personnelle à renommer, modifier le balisage, et d'organiser l'apocalyptique de la quantité d'images que j'héberge sur mon site personnel. Comme je l'ai été la collecte de photos drôles et pour plusieurs années, il n'y a pas de véritable rime ni raison dans les conventions de dénomination des fichiers. Ergo, Image0001.jpg doit être renommé à un descriptif de nom de fichier, et les champs de Métadonnées doivent être remplies.

Le processus va prendre un jpg, gif, png, tiff ou bmp et effectuez les opérations suivantes:

  1. chargement de l'image dans la mémoire
  2. convertir les fichiers bmp de jpg si nécessaire (pour un fichier de plus petite taille, la plupart du temps)
  3. charge des balises d'image en données images de la Structure (voir ci-dessous)
  4. de charger le fichier de données dans la Structure de données images (si nécessaire)
  5. affichage de l'image et des balises pour l'utilisateur de modifier (Dans une Zone d'Image et de plusieurs zones de Texte)
  6. permettre la modification de champs et de renommer le fichier
  7. écrire les changements sur le fichier image
  8. aller au fichier suivant.

Exemple:

  1. Charge Image0001.jpg. Remplir données images champs de Structure.
  2. Type dans la Description: "lolcat plafond chat envoie son fils".
  3. Données images.Nom de fichier a changé "lolcat-ceiling-cat-sends-son.jpg".
  4. Données images.Nom, .Mots clés, .Titre, de .Sujet, et .Commentaires changé à "lolcat plafond chat envoie son fils".
  5. Enregistrez un fichier avec un nouveau nom de fichier et enregistrer tous les nouveaux champs de tags.

(Plus tard, je vais aussi utiliser SQL pour construire un référentiel de base de données avec des liens vers les copies en ligne de ces fichiers pour permettre la recherche par mots-clés, sujet, nom du fichier, etc, mais c'est une autre couche qui est beaucoup plus facile que cela. Au moins pour moi.)

Problème:

Jusqu'à présent, plusieurs jours de recherche ont donné lieu à près de pas de progrès mesurables. L'Information a apparemment été inexplicablement caché derrière un tas de inattendus de recherche de mots clés que je n'ai pas bien à utiliser pour mes recherches. Toute aide serait appréciée.

Code actuel est:

Imports System.IO
Imports System.IO.Path
Imports System.Drawing.Imaging
Imports ImageData '(The Custom Structure below)'
'*Also has a project level reference to the dso.dll referenced below.'

Public Structure ImageData
        Shared FileAuthorAuthor As String
        Shared FileAuthorCategory As String
        Shared FileAuthorComments As String
        Shared FileAuthorCompany As String
        Shared FileAuthorDateCreated As DateTime
        Shared FileAuthorDescription As String
        Shared FileAuthorHeight As Decimal
        Shared FileAuthorHeightResolution As Decimal
        Shared FileAuthorImage As Image
        Shared FileAuthorKeywords As String
        Shared FileAuthorName As String
        Shared FileAuthorPath As String 'URL or IRL'
        Shared FileAuthorRead As Boolean
        Shared FileAuthorSubject As String
        Shared FileAuthorTitle As String
        Shared FileAuthorType As String
        Shared FileAuthorWidth As Decimal
        Shared FileAuthorWidthResolution As Decimal
End Structure 'ImageData

Et la méthode en cours pour trouver des données est:

Shared Function ReadExistingData(ByRef FileWithPath As String) As Boolean
'Extract the FileName'
Dim PathParts As String() = FileWithPath.Split("\") '"
Dim FileName As String = PathParts(PathParts.Length - 1) 
Dim FileParts As String() = FileName.Split(".")
Dim FileType As String = FileParts(FileParts.Length - 1)
'Create an Image object. '
Dim SelectedImage As Bitmap = New Bitmap(FileWithPath)
'Get the File Info from the Image.'
Dim ImageFileInfo As New FileInfo(FileWithPath)
Dim dso As DSOFile.OleDocumentProperties
dso = New DSOFile.OleDocumentProperties
dso.Open(FileWithPath.Trim, True, DSOFile.dsoFileOpenOptions.dsoOptionOpenReadOnlyIfNoWriteAccess)
ImageData.FileAuthor = dso.SummaryProperties.Author '* Requires dso.DLL'
ImageData.FileCategory = dso.SummaryProperties.Category '* Requires dso.DLL'
ImageData.FileComments = dso.SummaryProperties.Comments '* Requires dso.DLL'
ImageData.FileCompany = dso.SummaryProperties.Company '* Requires dso.DLL'
ImageData.FileDateCreated = ImageFileInfo.CreationTime
ImageData.FileDescription = dso.SummaryProperties.Comments  '* Requires dso.DLL.'
ImageData.FileHeight = SelectedImage.Height
ImageData.FileHeightResolution = SelectedImage.VerticalResolution
ImageData.FileImage = New Bitmap(FileWithPath)
ImageData.FileKeywords = dso.SummaryProperties.Keywords '* Requires dso.DLL'
ImageData.FileName = FileName
ImageData.FilePath = FileWithPath
ImageData.FileRead = ImageFileInfo.IsReadOnly
ImageData.FileSubject = dso.SummaryProperties.Subject '* Requires dso.DLL'
ImageData.FileTitle = dso.SummaryProperties.Title '* Requires dso.DLL'
ImageData.FileType = FileType
ImageData.FileWidth = SelectedImage.Width
ImageData.FileWidthResolution = SelectedImage.HorizontalResolution
Return True
End Function 'ReadExistingData'

Juste un couple de la "Box" des résultats de recherche j'ai passé en revue:

  • L'dso.DLL: Très Utile, mais indésirable. Nécessite DLL externe.

    [http://]www.developerfusion.com/code/5093/retrieving-the-summary-properties-of-a-file/

  • Des Données incomplètes ~ Ne réponds pas à mes questions

    [http://]msdn.microsoft.com/en-us/library/xddt0dz7.aspx

  • Nécessite DLL externe

    [http://]www.codeproject.com/KB/GDI-plus/ImageInfo.aspx

  • Logiciel externe nécessaire

    [http://]stackoverflow.com/questions/3313474/write-metadata-to-png-image-in-net

  • Anciennes Données ~ Visual Studio 2005 et .NET 2.0

    [http://]www.codeproject.com/KB/graphics/MetaDataAccess.aspx

  • Convertir BMP: il Semble utile

    [http://]www.freevbcode.com/ShowCode.Asp?ID=5799

Vous n'avez pas réellement posé une question ou si vous avez sa portée si vaste que nous ne pouvons pas déterminer ce que vous voulez vraiment de l'aide. Votre question est "Comment puis-je écrire les métadonnées d'un fichier JPEG" (je pense que seuls les formats JPEG et TIFF support structuré arbitraire de métadonnées et TIFF n'est pas trop web convivial.) Essayez de diviser votre post en problèmes pour nous de vous aider avec.
Description De La Mise À Jour

OriginalL'auteur Paul Mortenson | 2011-01-04