OVH Cloud OVH Cloud

Manipuler les propriétés des photos numériques

9 réponses
Avatar
Jean-Phil
Je d=E9sire cr=E9er une petite routine dans VBA pour renommer=20
automatiquement les photos prises avec mon appareil=20
num=E9rique. Pour ce faire, j'aimerais avoir acc=E8s dans VBA=20
aux informations relatives =E0 la photo (telles que=20
pr=E9sent=E9es en cliquant droit sur un fichier photo (jpg)=20
et en s=E9lectionnant "PROPRIETES" >> mini-
fen=EAtre "Propri=E9t=E9s"/ Onglet "R=E9sum=E9" /=20
Rubrique "Image"), en particulier la DATE du CLICHE.

L'aide de Visual Basic me permet d'acc=E9der aux propri=E9t=E9s=20
g=E9n=E9rales telles que Name, Size, Type, Attributes,=20
DateCreated, DateLastModified, Path, etc...
Mais IMPOSSIBLE de trouver les instructions pour ac=E9der=20
aux propri=E9t=E9s sp=E9cifiques "IMAGE".
Et l'assistance Microsoft se montre incomp=E9tente!

Merci de m'aider.
JPh.
(PS: pour me r=E9pondre, =F4ter la derni=E8re partie de mon=20
adresse email. merci.)

9 réponses

Avatar
\(Laurent Jordi\)
Bonjour,

Je pense que tu devrais utiliser FileSystemObject pour tous les attributs de
fichier. Pour les attributs graphiques, je ne sais pas et aimerais bien
savoir quelle est la bibliothèque à utiliser.

@+

LJ

"Jean-Phil" a
écrit dans le message de news: 769d01c40296$9b036f20$
Je désire créer une petite routine dans VBA pour renommer
automatiquement les photos prises avec mon appareil
numérique. Pour ce faire, j'aimerais avoir accès dans VBA
aux informations relatives à la photo (telles que
présentées en cliquant droit sur un fichier photo (jpg)
et en sélectionnant "PROPRIETES" >> mini-
fenêtre "Propriétés"/ Onglet "Résumé" /
Rubrique "Image"), en particulier la DATE du CLICHE.

L'aide de Visual Basic me permet d'accéder aux propriétés
générales telles que Name, Size, Type, Attributes,
DateCreated, DateLastModified, Path, etc...
Mais IMPOSSIBLE de trouver les instructions pour acéder
aux propriétés spécifiques "IMAGE".
Et l'assistance Microsoft se montre incompétente!

Merci de m'aider.
JPh.
(PS: pour me répondre, ôter la dernière partie de mon
adresse email. merci.)
Avatar
François Picalausa
Bonjour/soir,

"(Laurent Jordi)" a écrit dans le message de
news:
FileSystemObject



Erreur: mot à ne pas employer dans le contexte de ce newsgroup!
http://faq.vb.free.fr/index.php?question6

+Le désavantage qu'il est désactivé si on ne permet pas l'exécution des
scripts!

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com



Bonjour,

Je pense que tu devrais utiliser pour tous les
attributs de fichier. Pour les attributs graphiques, je ne sais pas
et aimerais bien savoir quelle est la bibliothèque à utiliser.

@+

LJ

"Jean-Phil"
a écrit dans le message de news:
769d01c40296$9b036f20$
Je désire créer une petite routine dans VBA pour renommer
automatiquement les photos prises avec mon appareil
numérique. Pour ce faire, j'aimerais avoir accès dans VBA
aux informations relatives à la photo (telles que
présentées en cliquant droit sur un fichier photo (jpg)
et en sélectionnant "PROPRIETES" >> mini-
fenêtre "Propriétés"/ Onglet "Résumé" /
Rubrique "Image"), en particulier la DATE du CLICHE.

L'aide de Visual Basic me permet d'accéder aux propriétés
générales telles que Name, Size, Type, Attributes,
DateCreated, DateLastModified, Path, etc...
Mais IMPOSSIBLE de trouver les instructions pour acéder
aux propriétés spécifiques "IMAGE".
Et l'assistance Microsoft se montre incompétente!

Merci de m'aider.
JPh.
(PS: pour me répondre, ôter la dernière partie de mon
adresse email. merci.)


Avatar
François Picalausa
Bonjour/soir,

Il existe des options spécifique à chaque format.
Pour des informations au sujet de ces formats, tu peux faire une recherche
sur
http://www.wotsit.org


Windows stoque aussi des données dans des flux NTS:
http://www.bellamyjc.org/fr/stream.html

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Jean-Phil" a
écrit dans le message de news:769d01c40296$9b036f20$
Je désire créer une petite routine dans VBA pour renommer
automatiquement les photos prises avec mon appareil
numérique. Pour ce faire, j'aimerais avoir accès dans VBA
aux informations relatives à la photo (telles que
présentées en cliquant droit sur un fichier photo (jpg)
et en sélectionnant "PROPRIETES" >> mini-
fenêtre "Propriétés"/ Onglet "Résumé" /
Rubrique "Image"), en particulier la DATE du CLICHE.

L'aide de Visual Basic me permet d'accéder aux propriétés
générales telles que Name, Size, Type, Attributes,
DateCreated, DateLastModified, Path, etc...
Mais IMPOSSIBLE de trouver les instructions pour acéder
aux propriétés spécifiques "IMAGE".
Et l'assistance Microsoft se montre incompétente!

Merci de m'aider.
JPh.
(PS: pour me répondre, ôter la dernière partie de mon
adresse email. merci.)


Avatar
\(Laurent Jordi\)
Je profite de la question pour dire que la gestion et le traitement des
fichiers graphiques a toujours nécessité l'appel à des API voir à des
bibliothèques exotiques.
Parmis les nombreuses bibliothèques standard de dot Net, n'en existe-t-il
pas une qui permettrait simplement d'accéder à des fonctions de base comme

conversion BMP <-> JPG <-> GIF
Redimentionnement
Réglage de la compression
Sélection de la couleur transparente (pour les gif)
Réglage de la profondeur de couleurs
...

Merci de votre réponse...
Avatar
François Picalausa
Bonjour/soir,

pour les question DotNet:
<Mauvais groupe - réponse standard>
Ce groupe est dédier à VB6 et à ses versions antérieurs. Pour obtenir de
l'aide sur VB.NET ou tous autre produit .NET, pose tes questions dans
les groupes contenant le terme "dotnet" ou "vsnet", tel que :

microsoft.public.fr.dotnet.vb
</Mauvais groupe - réponse standard>

Mais effectivement, en vb.net, d'après ce que je sais c'est à dire pas grand
chose, tu peux convertir, enregistrer avec la compression voulue,
redimensionner, ...
Note que googler un peu sur ce sujet ne pourrait pas te faire de mal.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"(Laurent Jordi)" a écrit dans le message de
news:
Je profite de la question pour dire que la gestion et le traitement
des fichiers graphiques a toujours nécessité l'appel à des API voir à
des bibliothèques exotiques.
Parmis les nombreuses bibliothèques standard de dot Net, n'en
existe-t-il pas une qui permettrait simplement d'accéder à des
fonctions de base comme

conversion BMP <-> JPG <-> GIF
Redimentionnement
Réglage de la compression
Sélection de la couleur transparente (pour les gif)
Réglage de la profondeur de couleurs
...

Merci de votre réponse...


Avatar
Jn-Phil
Bonjour et Grand merci pour votre aide.
Je ne suis cependant pas programmeur. Je bricole juste un peu avec VBA.
Que FSO soit lent et "peu professionnel" ne m'incomode pas car je ne suis
pas un développeur...
Le site http://www.bellamyjc.org/fr/stream.html me dépasse donc aussi pas
mal!
Moi, je voudrais juste bricoler qqch du style:
Sub AfficheInfoAccesFichier(specfichier)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = UCase(specfichier) & vbCrLf
s = s & "Créé le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified
MsgBox s, 0, "Infos d'accès au fichier"
End Sub... mais qi fonctionne aussi pour d'autres propriétés comme la date
de prise de vue.
(le but est de renommer les photos en incluant dans le nom la date de prise
de vue, le nom du photographe et un n° d'ordre)
Si c'est impossible avec VBA, dois-je utiliser un autre script? Si oui,
comment faire car je n'ai jamais écrit de fichier .BAT, .INI ou autre... ?
(si vous me renvoyez à un didacticiel, un site pour débutant svp)
Grand merci pour votre aide.
Jn-Phil.

"François Picalausa" a écrit dans le message de news:

Bonjour/soir,

Il existe des options spécifique à chaque format.
Pour des informations au sujet de ces formats, tu peux faire une recherche
sur
http://www.wotsit.org


Windows stoque aussi des données dans des flux NTS:
http://www.bellamyjc.org/fr/stream.html

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Jean-Phil" a
écrit dans le message de news:769d01c40296$9b036f20$
> Je désire créer une petite routine dans VBA pour renommer
> automatiquement les photos prises avec mon appareil
> numérique. Pour ce faire, j'aimerais avoir accès dans VBA
> aux informations relatives à la photo (telles que
> présentées en cliquant droit sur un fichier photo (jpg)
> et en sélectionnant "PROPRIETES" >> mini-
> fenêtre "Propriétés"/ Onglet "Résumé" /
> Rubrique "Image"), en particulier la DATE du CLICHE.
>
> L'aide de Visual Basic me permet d'accéder aux propriétés
> générales telles que Name, Size, Type, Attributes,
> DateCreated, DateLastModified, Path, etc...
> Mais IMPOSSIBLE de trouver les instructions pour acéder
> aux propriétés spécifiques "IMAGE".
> Et l'assistance Microsoft se montre incompétente!
>
> Merci de m'aider.
> JPh.
> (PS: pour me répondre, ôter la dernière partie de mon
> adresse email. merci.)




Avatar
Joyanta Sen [MS]
Bonsoir,

La librairie GDI+ permet de réaliser cela. On peut
récupérer les informations telles que:
- La marque de l'appareil numérique
- Les différentes dates liées à un fichier image

Voici une illustration avec un code en C. En ce qui
concerne VB, vous pourrez envisager de créer une DLL avec
des fonctions exportées ou une DLL COM, plus facile à
manipuler en VB6:

// ImagePropertyAdv.cpp : Defines the entry point for the
console application.
//

#include "stdafx.h"
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
#pragma comment(lib,"gdiplus.lib")
using namespace Gdiplus;

int main(int argc, char* argv[])
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput,
NULL);

// Create an Image object based on a JPEG file.
Image* image = new Image(L"c:NewImage.JPG");

// Find out how many property items are in the image,
and find out the
// required size of the buffer that will receive those
property items.
UINT totalBufferSize;
UINT numProperties;
image->GetPropertySize(&totalBufferSize,
&numProperties);

// Allocate the buffer that will receive the property
items.
PropertyItem* pAllItems = (PropertyItem*)malloc
(totalBufferSize);

// Fill the buffer.
image->GetAllPropertyItems(totalBufferSize,
numProperties, pAllItems);

// Print the id data member of each property item.
for(UINT j = 0; j < numProperties; ++j)
{
printf("%xn", pAllItems[j].id);
printf("%sn", pAllItems[j].value);

}

free(pAllItems);
delete image;
GdiplusShutdown(gdiplusToken);
return 0;
}

Joyanta Sen

-----Message d'origine-----
Je désire créer une petite routine dans VBA pour


renommer
automatiquement les photos prises avec mon appareil
numérique. Pour ce faire, j'aimerais avoir accès dans


VBA
aux informations relatives à la photo (telles que
présentées en cliquant droit sur un fichier photo (jpg)
et en sélectionnant "PROPRIETES" >> mini-
fenêtre "Propriétés"/ Onglet "Résumé" /
Rubrique "Image"), en particulier la DATE du CLICHE.

L'aide de Visual Basic me permet d'accéder aux


propriétés
générales telles que Name, Size, Type, Attributes,
DateCreated, DateLastModified, Path, etc...
Mais IMPOSSIBLE de trouver les instructions pour acéder
aux propriétés spécifiques "IMAGE".
Et l'assistance Microsoft se montre incompétente!

Merci de m'aider.
JPh.
(PS: pour me répondre, ôter la dernière partie de mon
adresse email. merci.)
.



Avatar
François Picalausa
Bonjour/soir,

ça me fait justement penser à la typelib de vbAccelerator qui permet
d'utiliser GDI+ très simplement:
http://www.vbaccelerator.com/home/VB/Type_Libraries/GDIPlus_Type_Library/article.asp

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Joyanta Sen [MS]" a écrit dans le
message de news:7c3001c40303$b9e47980$
Bonsoir,

La librairie GDI+ permet de réaliser cela. On peut
récupérer les informations telles que:
- La marque de l'appareil numérique
- Les différentes dates liées à un fichier image




Joyanta Sen


Avatar
Jn-Phil
Bonsoir.

Grand merci pour votre aide.

On m'a par ailleurs renseigné la dll freeware exifview.dll
(http://members.cox.net/foxbat121/exifview.htm) qui permet de traiter ces
propriétés. et ça fonctionne bien sous VBA.

Merci pour vos autres propositions. Je les examine.
Jean-Philippe


"Joyanta Sen [MS]" a écrit dans le message
de news: 7c3001c40303$b9e47980$

Bonsoir,

La librairie GDI+ permet de réaliser cela. On peut
récupérer les informations telles que:
- La marque de l'appareil numérique
- Les différentes dates liées à un fichier image

Voici une illustration avec un code en C. En ce qui
concerne VB, vous pourrez envisager de créer une DLL avec
des fonctions exportées ou une DLL COM, plus facile à
manipuler en VB6:

// ImagePropertyAdv.cpp : Defines the entry point for the
console application.
//

#include "stdafx.h"
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
#pragma comment(lib,"gdiplus.lib")
using namespace Gdiplus;

int main(int argc, char* argv[])
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput,
NULL);

// Create an Image object based on a JPEG file.
Image* image = new Image(L"c:NewImage.JPG");

// Find out how many property items are in the image,
and find out the
// required size of the buffer that will receive those
property items.
UINT totalBufferSize;
UINT numProperties;
image->GetPropertySize(&totalBufferSize,
&numProperties);

// Allocate the buffer that will receive the property
items.
PropertyItem* pAllItems = (PropertyItem*)malloc
(totalBufferSize);

// Fill the buffer.
image->GetAllPropertyItems(totalBufferSize,
numProperties, pAllItems);

// Print the id data member of each property item.
for(UINT j = 0; j < numProperties; ++j)
{
printf("%xn", pAllItems[j].id);
printf("%sn", pAllItems[j].value);

}

free(pAllItems);
delete image;
GdiplusShutdown(gdiplusToken);
return 0;
}

Joyanta Sen

-----Message d'origine-----
Je désire créer une petite routine dans VBA pour


renommer
automatiquement les photos prises avec mon appareil
numérique. Pour ce faire, j'aimerais avoir accès dans


VBA
aux informations relatives à la photo (telles que
présentées en cliquant droit sur un fichier photo (jpg)
et en sélectionnant "PROPRIETES" >> mini-
fenêtre "Propriétés"/ Onglet "Résumé" /
Rubrique "Image"), en particulier la DATE du CLICHE.

L'aide de Visual Basic me permet d'accéder aux


propriétés
générales telles que Name, Size, Type, Attributes,
DateCreated, DateLastModified, Path, etc...
Mais IMPOSSIBLE de trouver les instructions pour acéder
aux propriétés spécifiques "IMAGE".
Et l'assistance Microsoft se montre incompétente!

Merci de m'aider.
JPh.
(PS: pour me répondre, ôter la dernière partie de mon
adresse email. merci.)
.