CALMELS Ivan LAGANE Loïc TREY Fabrice LPD2I 2003-2004 Projet ASP.NET FILAP (Fabrice Ivan Loïc Album Photo) Projet Tuteuré LPD2I 07/06/2017 SOMMAIRE Définition du projet .................................................................................................................. 2 Etat de l’Art .............................................................................................................................. 2 I. Gestion d’images ............................................................................................................ 2 A. Stockage ..................................................................................................................... 3 B. Réutilisation ............................................................................................................... 3 II. Les bases de données multimédias ................................................................................. 5 A. Définition .................................................................................................................... 5 B. Représentation des images ......................................................................................... 5 III. Les bases de données « classiques » .............................................................................. 6 A. Définition .................................................................................................................... 6 B. Représentations des images ....................................................................................... 7 IV. Etude des logiciels de gestion de bases de données image ............................................ 7 Traitement du sujet .................................................................................................................. 9 I. Le besoin ........................................................................................................................ 9 II. Modélisation d’une image ............................................................................................ 10 III. L’analyse : le modèle choisi ......................................................................................... 11 IV. Exemples : instances issues du modèle ........................................................................ 12 Réalisation ............................................................................................................................... 15 I. Problématique............................................................................................................... 16 II. Technologies existantes – Choix techniques ................................................................ 16 III. Mise en place de la plate-forme de développement ..................................................... 17 IV. Structure de la base ...................................................................................................... 18 V. Elaboration du site ........................................................................................................ 20 A. Fonctionnalités du site ............................................................................................. 20 B. Analyse critique ........................................................................................................ 31 Conclusion ............................................................................................................................... 33 Annexes ................................................................................................................................... 34 Définition du projet Le projet à concevoir est la réalisation d’une application Web de gestion d’images. Le sujet à traiter est le stockage, la gestion et le traitement d’images mais aussi toute une partie d’étude du sujet et des technologies pouvant y être associées. Il a fallu dans un premier temps définir une image et voir aussi les diverses technologies existantes pour gérer ces images. Une fois cette approche du projet réalisée, nous nous sommes donc concentrés sur les technologies adéquates pour mener à terme ce projet. Ensuite, nous avons défini le modèle de données et élaboré cette application avec les choix que nous avions fait. Etat de l’Art I. Gestion d’images IUT de RODEZ Page 2 Projet Tuteuré LPD2I 07/06/2017 A. Stockage Du chemin : Une première méthode pour stocker une image est d’enregistrer le chemin (relatif, absolu, distant, ...) de l'image dans la base de données comme chaîne de caractère. Cette méthode est toute simple, il suffit d’enregistrer les images dans un répertoire, et grâce à l’adresse stockée on utilise la balise <IMG> qui permettra son affichage. Sous forme binaire : Avant toute chose, il faut savoir qu'il est déconseillé de stocker des images dans une base de données. C'est très lourd et cela peut même ralentir le serveur de données. Il ne faut pas perdre de vue que le but premier d'une base de données est de stocker des données à des fins de recherches, d'indexages ou de calculs. Ce qui n'a absolument aucune application dans le cas d'images. Cela vaut pour tout les types de base de données (Oracle, SQL Server, ...). Sous SQL Server, il s’agit d’un type BLOB. Le principe général est de transformer l’image en binaire et de la stocker grâce à la méthode Parameters.add. B. Réutilisation 1. Filtrage : L’accès à certaines images peut se faire par l’intermédiaire d’une recherche sur le contenu d’une image. Des méthodes de reconnaissance par similarité ou par analyse des formes sont utilisées mais très difficile à mettre en œuvre. Le contenu peut être plus facilement défini par des mots-clés, des catégories, etc. L’application de filtres de ce type permet d’affiner le résultat de la requête. 2. Visualisation : Résolution d'une image : Une image est divisée en points ou pixels. Considérons une image de 10 cm sur 10 cm avec une résolution très faible de 10 pixels par cm. Elle est codée sur 100 x 100 = 10000 pixels. Avec une résolution convenable de 100 pixels par cm (un pixel mesure 0,1 mm), elle serait codée sur 1000 x 1000 = 1000000 pixels = 1 M pixels. Le symbole M signifiant million. Si le nombre de pixels est insuffisant par cm, on observe l'effet de pixellisation. Si la résolution correspond à celle d'un écran d'ordinateur, elle est donc idéale pour visualiser une image sur l'écran. Les formats d’images : Les images matricielles de bonne qualité enregistrées pixel par pixel (format bmp) peuvent être très encombrantes. Cela pose un problème de volume occupé en IUT de RODEZ Page 3 Projet Tuteuré LPD2I 07/06/2017 mémoire, mais aussi de difficulté lors des traitements : plus une image est "lourde", plus elle nécessite de ressources matérielles, surtout pour les transferts de données, en particulier sur l'internet. Pour réduire la place occupée en mémoire, on utilise divers algorithmes de compression et donc différents formats de stockage. Lors du chargement de l'image, le logiciel reconnaissant le format du fichier le décompresse à l'ouverture. Lors de son utilisation, le fichier est donc décompressé. Principaux formats : Format Compression des données BMP Non compressé Nb de Affichage Format couleurs progressif propriétaire de 2 à 16 Non Non millions JPEG Réglable, avec perte de qualité. Plus la compression est importante, plus l'image est dégradée. format destructeur Oui, sans perte de qualité 16 millions de 2 à 256 Oui avec palette. Brevet Unisys Réglable, au choix sans perte ou avec perte de qualité Oui, sans perte de qualité 16 millions Brevet Aldus corporation Non, libre de Tous, recommandé droits Internet mais incompatible avec les navigateurs anciens. Supporte la transparence. GIF TIFF PNG Oui Non de 2 à 256 Oui ou 16 millions Usage Image non dégradée mais très lourde. Stockage Non, libre de Tous usages, selon droits compression. Images "naturelles". Logos et Internet. Supporte les animations et la transparence. Tous sauf Internet Si l’on veut placer des images sur le Web, il vaut mieux utiliser le format PNG ou le format JPEG compressé. La difficulté est de trouver un compromis entre le volume occupé par l'image et sa qualité. On peut considérer qu'une compression à 15% dégrade l'image de manière imperceptible (le volume occupé est diminué de beaucoup plus de 15%). Dans tous les cas, il faut faire des essais… Différents moyens : Il existe plusieurs moyens de visualiser les images numériques. Tout d’abord en utilisant un explorateur présent sur tous les systèmes d’exploitation. De même, nous pouvons utiliser un logiciel spécifique comme ACDSEE. Enfin, une image peut être visualisée grâce à l’explorateur, lorsqu’elle est intégrée dans une page web. IUT de RODEZ Page 4 Projet Tuteuré LPD2I 07/06/2017 II. Les bases de données multimédias A. Définition Une base de données multimédia permet par rapport aux autres bases de données de traiter de nouveaux formats de données. Ces format concernent les données multimédia tel que : Le son Les photographies Les vidéos Les séquences interactives Les SGBD Multimédia (appelés aussi SGBD-R Orientés Objet ou Langages de 4ème Génération) sont capables de traiter les données multimédia. Ils conservent les données dans leur format spécifique. Au-delà des types de données classiques, un SGBD multimédia doit être capable de gérer des types de données multimédias, incluant texte libre, géométrie, image, son, vidéo, etc. Il doit bien sûr être un SGBD, et donc offrir persistance, concurrence et fiabilité des données, proposer un langage d’interrogation par le contenu et prendre en charge la gestion de larges volumes de données. Les BD multimédias sont particulièrement volumineuses, du fait de la complexité des types de données gérées. L’efficacité des recherches par le contenu sur les types de données multimédias est une difficulté importante des SGBD multimédias. Pour surmonter cela, ces systèmes doivent offrir des structures de stockage et de recherche efficaces. B. Représentation des images Il existe un type de données Image dans les bases de données multimédia. C’est simplement une matrice de pixels, chaque pixel étant codé par un nombre entier représentant sa couleur, parmi 2**16 ou 2**32 couleurs possibles. Les dimensions classiques des images informatiques sont 640*480, 800*600, 1024*768. Cette matrice est encapsulée par des familles de fonctions pour les manipulations de base (tourner, translater,…), pour l’amélioration des couleurs (peindre, améliorer), pour la composition d’images (superposer, soustraire,…), pour l’extraction de thèmes, et enfin pour les mesures de similarité. A. Les bases de données images IUT de RODEZ Page 5 Projet Tuteuré LPD2I 07/06/2017 Les bases de données images sont développées pour permettre d’effectuer des traitements plus avancés qu’avec des bases de données multimédia et le type BLOB associé à ces dernières. Ainsi, des requêtes sur le contenu des images pourront être demandées. La recherche d’image dans ce type de bases de données peut se faire par l’intermédiaire de mots-clés ou de construction linguistique proches du langage naturel. En effet, le résultat de telles requêtes permet donc de rechercher des images par similarité. Les images présentées à l’utilisateur après la recherche seront les images les plus voisines d’une image donnée. Cependant, il existe certains problèmes liés à ces bases de données images : les images stockées sont souvent complexes pour les systèmes de reconnaissance de forme et leur nombre est généralement très élevé. Au niveau de la structure de données, les images sont de matrices à deux dimensions ; chaque élément de la matrice est un pixel. La recherche s’effectue par l’intermédiaire d’un index. Cet index est calculé au chargement et peut être défini suivant plusieurs types : mots-clés et légendes (description textuelle manuelle de l’image), signatures (description textuelle et parties caractéristiques de l’image), distribution de couleurs (image caractérisée par ses couleurs essentielles), texture des images (extraire les granularités répétitives), extraction de sous objets (reconnaissance de sous objets homogènes), détection de contours (zones de contrastes détectées et comparées à d’autres images), reconnaissance de formes (forme d’un objet, d’un paysage, d’une personne et comparaison). La perception de similitudes entre images peut être réalisée en fonction de thèmes. Un processus automatique d’extraction est effectué sur les images pour résumer ces images par des vecteurs de thème (vecteur à N dimensions, chaque dimension correspondant à une mesure sous forme d’un nombre réel ou d’un codage). Ces thèmes sont regroupés en classes de thèmes. Ces classes correspondent à l’interprétation d’une image dans un domaine donné. La recherche par similarité s’effectue en voyant la proximité des vecteurs de thèmes. Un calcul de distance est opéré entre les points représentés par les vecteurs. Le principe général est de classer les points en partitions et éliminer celles dont la distance minimale est supérieure à celle d’autres images. De nombreuses fonctions sont disponibles sur la matrice où sont stockées les images. Ces opérations concernent la manipulation de base, l’amélioration des couleurs, la composition d’images, l’extraction de thèmes et la mesure de similarité. Diverses techniques de transformation sont également disponibles pour obtenir les vecteurs de thème. III. Les bases de données images représentent donc une partie des bases de données multimédia. En effet, on parle aussi de bases de données audio et vidéo. Les bases de données « classiques » A. Définition IUT de RODEZ Page 6 Projet Tuteuré LPD2I 07/06/2017 Peu de systèmes sont exclusivement multimédias. La tendance consiste plutôt à utiliser les SGBD objet ou objet relationnels pour réaliser des SGBD multimédias. Il s’agit alors d’intégrer les types de données multimédias avec les fonctions de manipulation usuelles, des méthodes de stockage et de recherche appropriées, et des composants de formulation de requêtes et de visualisation de résultats adéquats. B. Représentations des images 1. BLOB : Binary Large OBject. Littéralement « grand objet binaire ». C'est en général une image ou une séquence sonore sans grande structure interne. La taille d'un Blob peut aller jusqu'à plusieurs Go. C’est une forme de stockage très simple des types de données non formatés : il s’agit toujours d’une séquence de bits ou de caractères. Cette chaîne peut être lue ou écrite comme une valeur d’attribut dans la base. Les SGBD ne savent pas traiter le contenu des BLOB : il n’en connaissent pas la structure. Les opérations sont restreintes à la lecture et l’écriture par partie. 2. CLOB : Character Large Object. Chaînes constituées de caractères codés sur un octet. Il existe aussi les DBCLOB (Double Byte CLOB) constitués quant à eux de caractères notés sur deux octets. Permet de stocker des textes. 3. BFILE : Binary File Permet de stocker un fichier binaire dans un fichier externe à la base de données Oracle (sur disque dur, CDROM, CdPhoto, …). Le fichier peut avoir une taille maximale de 4 giga bytes. L’accès aux données n’est possible qu’en lecture, il n’est donc pas possible de modifier un BFILE. IV. Etude des logiciels de gestion de bases de données image (cf. Annexe : Tableau récapitulatif de ces logiciels) Prix Le prix des différents logiciels de gestion de bases de données multimédia varient de 1500 € à 5030 €. Interface Web Afin d’avoir une visibilité globale et une diffusion sur Internet ou sur un Intranet, tous ces logiciels permettent de créer une interface web. Types de documents gérés IUT de RODEZ Page 7 Projet Tuteuré LPD2I 07/06/2017 Les logiciels les plus performants gèrent tous les types de documents multimédia. Certains ne traitent que les principaux comme les photos, les images, les graphiques… Configuration La plupart de ces logiciels sont utilisables sous toutes les versions de Windows et autres plateformes comme Power Macintosh et MacOS, certains sont plus spécifiques comme DFI qui ne marche qu’avec des pc Mac Unix. Un autre logiciel se démarque (Alexandrie de GB CONCEPT) puisqu’ il permet au sein d’un même réseau de pouvoir faire fonctionner les postes de travail avec des systèmes d’exploitations différents (Windows NT + Mac). Création d’une base La principale différence entre eux dans la création d’une base réside dans la possibilité de pouvoir paramétrer ou contrôler les champs de celle-ci, ainsi que d établir des relations entre les bases. Acquisition et saisie Tous les logiciels possèdent des outils pour numériser les documents dans presque ou tous les formats d’images existants (jpeg, tiff, bmp, …). Bien sûr, les images peuvent être aussi importées ou exportées. Enfin, au niveau de la saisie l’utilisation d’un thésaurus est omniprésente. Il s’agit d’utiliser un vocabulaire normalisé et structuré (mots significatifs, synonymes, polysèmes,…) de façon à donner la liste des mots importants permettant l’indexation. Un thésaurus peut être global ou spécifique à un domaine. Indexation Les modes d’indexation utilisés sont les suivants : - Thésaurus - Texte intégral - Liste d’index - Aide à la saisie - Mots-clés Tous ces modes permettent d’aider l’utilisateur à retrouver plus facilement les documents pertinents et donc de trouver un maximum de réponses correctes. Recherche Les modes de recherche utilisent certains modes d’indexation, en particulier les motsclés, le texte intégral et quelquefois le texte libre. En plus des fonctions de tri sont intégrées aux logiciels. Consultation et affichage De nombreuses fonctionnalités sont proposées par ces logiciels comme par exemple l’affichage par mosaïque, par liste, par vignette, en plein écran… De même ils intègrent des outils de retouche d’image pour la rotation, le zoom, le redimensionnement… Gestion La plupart permettent la gestion des utilisateurs (accès, droits…), la gestion commerciale des stocks (commande, emprunt, …) et la gestion et publication Web. IUT de RODEZ Page 8 Projet Tuteuré LPD2I 07/06/2017 Sécurisation Des outils de sécurisation sont présents, qui permettent en général la gestion de mots de passe. Services Enfin, plusieurs services sont proposés comme la maintenance, l’assistance, la formation, l’administration ainsi que l’analyse des besoins (conseil, audit, cahier des charges, statistiques…) Conclusion Lors de l’étude de ces logiciels de gestions de bases de données d’images, nous pouvons nous rendre compte que de nombreuses fonctionnalités ne sont pas indispensables pour notre projet. En effet, l’outil que nous allons développer est une version simplifiée de ces logiciels. Bien sûr il faudra qu’il intègre les principales fonctionnalités comme permettre de gérer différents formats d’images mais les outils de gestion des utilisateurs ou de retouche d’image peuvent être mis de côté. Le principal avantage de développer notre application réside dans la possibilité de définir nos propres besoins et donc de limiter les coûts. Comme nous l’avons vu, ces logiciels sont assez onéreux et le client n’a pas peut être pas besoin d’autant d’outils. Cependant cette étude est assez intéressante puisqu’elle permet de voir ce qui se fait et donc de nous faire réfléchir sur le domaine et les outils utilisés.Traitement du sujet I. Le besoin Le besoin principal de ce projet est la réalisation d’un site Internet permettant la gestion d’images, s’apparentant à un album photo, grâce au langage ASP.NET et à MSDE, version allégée de SQL Server. Les images seront directement stockées dans la base de données grâce au type BLOB. L’application sera divisée en deux grandes parties : la partie utilisateur et la partie administrateur. IUT de RODEZ Page 9 Projet Tuteuré LPD2I 07/06/2017 Dans la partie utilisateur, nous pourrons consulter le catalogue de photos grâce à une liste de toutes les photos de la base, accéder à la description d’une photo en particulier et pouvoir l’afficher. De même, deux types de recherche seront disponibles une recherche simple et une avancée. La partie administrateur nous servira à ajouter, supprimer, modifier une photo. De même, il sera possible d’appliquer les caractéristiques d'une photo à une ou plusieurs autres photos. Nous pourrons créer aussi les différentes rubriques, personnes et leur contenu respectif, et donc les différentes instanciations d’une photo (cf. modélisation d’une image). II. Modélisation d’une image Nous avons décidé de créer un modèle de photo assez générique afin de pouvoir concevoir plusieurs instanciations. Notre photo est composée d’un ensemble d’éléments regroupés en rubriques (ex : titre, lieu,…) se décomposant elles-mêmes en 3 niveaux maximum. En effet, une rubrique contient des éléments. Certains éléments peuvent être de type "séparateur" et deviennent alors des sous catégories de la rubrique. Grâce à la gestion de l’ordre d’affichage des éléments, nous pouvons définir le contenu des rubriques et des sous rubriques. Les rubriques sont stockées dans la table RUBRIQUE et les éléments dans la table ELT_RUBRIQUE. La table ELEMENT contient les valeurs par défaut de tous les éléments (ex : case cochée). Enfin la table CARACTERISE associe tous les éléments à la photo et contient le contenu de ces éléments. La deuxième grande partie du modèle concerne la description des personnes. Toutes les instanciations sont possibles. En effet, nous pouvons créer un composant personne adapté au cadre de la famille, d’une entreprise, d’une école…Ce composant a été conçu de la même manière que les rubriques et les éléments. Les personnes sont divisées en plusieurs catégories (ex : famille, amis, …) stockées dans la table CAT_PERSONNE .Ces catégories sont composées de personnes entreposées dans la table PERSONNE (ex : parent1, parent2, ami…). Certaines valeurs de cette table et de type "séparateur" (ex : parent1 & parent2) permettent de créer une sous catégorie composée d’élément de la même table. La table DEF_PERSONNE contient les valeurs par défaut des personnes. Et donc, la table FIGURE associe la catégorie Personnes à une photo. Différentes rubriques peuvent êtres créées pour la modélisation d’une photo : les principales caractéristiques d’une photo et stockées dans la table du même nom (auteur, date d'ajout, taille, résolution, nombre de vue, description). le contexte de lieu géographique (pays, région) le contexte de lieu naturel (montagne, mer, rivière,…) les éléments techniques (marque appareil photo, qualité fichier, date du cliché) Rangement (type, stockage) Type de la photo (type : paysage,ville,… ; conditions : moment, pluie,…) etc... IUT de RODEZ Page 10 Projet Tuteuré LPD2I III. 07/06/2017 L’analyse : le modèle choisi Diagramme des classes UML Schéma relationnel PHOTOS (id_photo, image, titre, description, taille, date, auteur, reso_horizontale, reso_verticale, type, nb_vue) FIGURE (id_photo, id_personne, id_cat_personne, choix) PERSONNE (id_personne, id_cat_personne, nom, type, ordre_affichage) CAT_PERSONNE (id_cat_personne, libelle, ordre_affichage) DEF_PERSONNE (id_def_personne, id_personne, id_cat_personne, choix) IUT de RODEZ Page 11 Projet Tuteuré LPD2I 07/06/2017 CARACTERISE (id_elt_rubrique, id_rubrique, id_photo, choix) RUBRIQUE (id_rubrique, libelle, ordre_affichage) ELT_RUBRIQUE (id_elt_rubrique, id_rubrique, libelle, type, ordre_affichage) ELEMENT (id_element, choix, id_elt_rubrique, id_rubrique) IV. Exemples : instances issues du modèle Modèle IUT IUT de RODEZ Page 12 Projet Tuteuré LPD2I 07/06/2017 Modèle Mes photos IUT de RODEZ Page 13 Projet Tuteuré LPD2I IUT de RODEZ 07/06/2017 Page 14 Projet Tuteuré LPD2I 07/06/2017 Modèle hôpital Réalisation IUT de RODEZ Page 15 Projet Tuteuré LPD2I I. 07/06/2017 Problématique La principale problématique de cette application est le stockage de l’image. C’est-àdire la sauvegarde de l’image ainsi que les informations qui l’accompagnent. Les logiciels de reconnaissance d’image ne sont pas encore très élaborés, c’est pour cela que le modèle choisi pour la modélisation d’une image se sert des nombreuses informations en rapport avec une image donnée. En définissant une image à partir des éléments qu’elle contient, il est possible d’effectuer divers traitements sur celle-ci. Ces éléments constituant l’image sont créés par l’utilisateur dans l’application et dépendent ainsi totalement de ces besoins. II. Technologies existantes – Choix techniques 1. ASP En 1996, Microsoft lance les ASP, pour Active Server Page. ASP a su très vite s'imposer sur le marché des technologies serveur, grâce notamment à la gratuité du serveur Web : IIS (Internet information Server). Ce langage, propriété de Microsoft, se veut très proche de Visual Basic. Le langage permet, bien entendu, d'exécuter des Scripts côté serveur, de rendre les pages dynamiques et, ainsi, de posséder un site toujours renouvelé, avec une mise à jour constante. Le langage de base pour développer en ASP est le VBScript (version light du célèbre Visual Basic de Microsoft). Il a quelques ressemblances avec JavaScript. Les pages ASP portent l'extension .asp (Active Server Page). 2. ASP.NET Il s'agit d'une architecture 3 tiers avec un utilisateur distant (navigateur), un serveur HTTP et les données dans une base de données centralisée. Il est donc nécessaire d'effectuer 3 choix : la technologie de développement Web, la base de données et l'environnement graphique. Cette technologie de développement fonctionne sous les systèmes Windows 2000 et XP équipés du framework .NET. Quelques précisions sur ASP.NET : ASP.NET est indissociable du framework .NET, l'environnement d'exécution des applications .NET constitué du CLR (Common Language Runtime), de la bibliothèque des classes et des compilateurs .NET. Les pages ASP.NET portent l'extension .aspx (ASP eXtented). La compilation d'une page ASP.NET n'a lieu que lors de la première requête vers cette page. La page demandée est alors compilée sous la forme d'un module objet en langage MSIL (Microsoft Intermediate Language). La CLR réalise l'édition de lien avec les modules objet des classes utilisées dans la bibliothèque .NET ainsi que la production d'un assemblage (composant binaire exécutable). Ceci conduit à la production d'un contenu HTML, transmis en retour au navigateur. IUT de RODEZ Page 16 Projet Tuteuré LPD2I 07/06/2017 Divers langages peuvent être utilisé dans une page : C#, VB.NET et Jscript.NET. VB.NET : évolution majeure de Visual Basic auquel ont été ajouté des fonctionnalités objet. C# : langage objet dont la syntaxe et les fonctionnalités sont proches de C++ et Java. Jscript.NET : évolution de Jscript prenant en charge le typage des variables et les fonctionnalités objet. Nous avons choisi ASP.NET car cette technologie est très récente et nous souhaitions découvrir un nouveau langage qui puisse nous servir par la suite. De plus, parmi les langages disponibles pour la conception des pages, nous avons choisi VB.NET car la majorité des exemples et des tutoriaux disponibles sur Internet sont en VB.NET. 3. MSDE (Microsoft SQL Server 2000 Desktop Engine) Il s’agit d’une version allégée et gratuite du SGBD Microsoft SQL Server. En effet celle-ci ne contient que les services de SQL Server, sans les interfaces graphiques de gestion de la base de données. Il s'agit donc d'un environnement léger dédié au développement. 4. BLOB Nous avons choisi de stocker les images avec le type BLOB et non avec leurs chemins. En faisant les recherches sur les bases de données multimédias, nous avons découvert l’existence de ce type. Nous avons donc décidé d’utiliser cette méthode. Avec MSDE, il existe un type « image » qui est en fait un BLOB. Nous avons trouvé des difficultés dans la recherche d’exemples (principalement sur Internet) car les BLOB sont apparemment peu utilisés. En effet, pour pouvoir stocker une image dans ce format, il faut d’abord la transformer en binaire et l’envoyer dans la base. Mais nous sommes enfin arrivés à stocker des images et à les afficher et donc l’application que nous avons réalisée utilise le type « image » pour le stockage dans la base de données. 5. Flash En premier lieu, c'est un logiciel de dessin vectoriel, qui permet de créer facilement des animations mais également de créer des composants (boîte à cocher, champs de saisie, liste déroulant, liste de contrôle, …). Le comportement de ces composants peut être modifié à l’aide du langage de programmation associé à Flash : Action Script. Ainsi, par l’intermédiaire d’un plugin, ces composants sont affichés et utilisés dans le navigateur. Même si Flash permet l’accès aux bases de données, celui-ci sera effectué dans la partie ASP.NET, les composants Flash se limitant au traitement des données au niveau de l’IHM de l’application. III. Mise en place de la plate-forme de développement Pour réaliser ce projet, une configuration logicielle est nécessaire: IUT de RODEZ Page 17 Projet Tuteuré LPD2I 07/06/2017 Windows 2000 ou XP, Framework .NET (gratuit), environnements de développement WebMatrix (gratuit), Microsoft Visual Studio .NET (disponible à l'IUT), Delphi 7 Studio, ou un simple bloc note. un moteur de base de données MSDE (gratuit). Le kit de développement .NET (ou .NET SDK) contient un ensemble d'outils nécessaire au développement d'applications .NET (la CLR, la bibliothèque des classes .NET, les compilateurs .NET, le moteur de base de données MSDE, une documentation complète, de nombreux exemples). Il est téléchargeable gratuitement sur la site www.asp.net dans une langue choisie (français dans notre cas). Sa taille est de 130 Mo. L'installation du kit de développement nécessite un système d'exploitation compatible : Windows 2000 ou XP Pro. Il est aussi recommandé d'installer au préalable le serveur Web IIS (Internet Information Server). Pour installer ce dernier, il faut passer par Ajout/Suppression de programmes dans Panneau de configuration et choisir Ajouter/Supprimer des composants Windows. Pour installer ensuite le kit de développement, il suffit de lancer le setup.exe et de garder les options par défaut. L'installation du framework .NET est terminée. L'installation de MSDE se fait en ligne de commande une fois le paquetage d’installation décompressé (dans le répertoire par défaut C:\MSDERelA) : il faut donc faire «setup SAPWD=mot de passe INSTANCENAME=nom d'instance». Il faut ensuite redémarrer et une l'icône apparaît dans la barre des tâches en bas à droite. Il faut alors effectuer une modification dans la base de registre : mettre la valeur de la clé "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\BDD\MSSQLServer\LoginMode" à 2 (connexion mixte : utilise le mode de connexion de Windows ou les identifiants SQL, le mode par défaut ne permettant que le mode de connexion Windows). L'installation de Web Matrix est elle aussi assez simple, il suffit de lancer l'exécutable d'installation. Le groupe ASP.NET Web Matrix est alors ajouté dans le menu Programmes du menu Démarrer. IV. Structure de la base 1. Création de la base Par l'intermédiaire de l'interface graphique de Web Matrix, nous pouvons effectuer des opérations simples sur une base de données SQL Server ou MSDE. Pour créer une nouvelle base ou se connecter à une base existante, il faut donc cliquer sur l'icône New Connection dans l'onglet Data. Dans la fenêtre qui apparaît, le nom du serveur et le mode d'identification sont demandés. Il suffit ensuite de cliquer sur le lien Create New Database en saisissant un nom pour la base de données. IUT de RODEZ Page 18 Projet Tuteuré LPD2I 07/06/2017 Un fois connecté à la base de données, pour créer une table, il faut cliquer sur l'élément Table dans l'onglet Data et ensuite sur l'icône New Item. Il est nécessaire ensuite de spécifier les caractéristiques de la base. Pour mettre à jour le contenu d'une table existante, on sélectionne la table souhaitée dans la fenêtre Data et on clique ensuite sur l'icône Edit. Une fenêtre apparaît, il suffit ensuite de saisir les données. Web Matrix permet de créer des procédures stockées, en saisissant directement le code SQL dans la fenêtre de saisie. On sélectionne le lien Stored Procedures dans la fenêtre Data, puis l'icône New Item. Une fenêtre pour l'édition du code SQL apparaît. Il suffit donc de saisir le code et d'enregistrer les modifications. 2. Récupération de la base Une fois la structure faite et sauvegardée, il est possible de la récupérer pour pouvoir travailler sur d’autres ordinateurs. On a donc 2 scripts, un de sauvegarde dans un fichier et un de restauration des données : backup.sql restore.sql USE master GO BACKUP DATABASE photos TO DISK = 'c:\photos.bak' WITH FORMAT, INIT, NAME = 'Sauvegarde de la base photo'; GO USE master GO RESTORE DATABASE photos FROM DISK = 'c:\photos.bak'; GO Pour placer la structure dans un fichier, il faut donc mettre le fichier backup.sql dans C:\ et exécuter la commande suivante : osql.exe -Slpd2i24\bdd -Usa -Pphotos -dmaster -iC:\backup.sql -r1 -m-1 (le nom de l’ordinateur doit être remplacé suivant la machine sur laquelle on se trouve). Pour récupérer la structure, on place donc les fichiers restore.sql et photos.bak (fichier de sauvegarde généré par backup.sql) dans C:\ et on exécute la commande suivante : osql.exe -Slpd2i24\bdd -Usa -Pphotos -dmaster -iC:\restore.sql -r1 -m-1 (le nom de l’ordinateur doit être remplacé suivant la machine sur laquelle on se trouve). On peut donc voir le résultat du chargement de la structure dans l’onglet Data du logiciel Web Matrix. IUT de RODEZ Page 19 Projet Tuteuré LPD2I V. 07/06/2017 Elaboration du site Une fois les logiciels installés, il faut donc créer un répertoire virtuel dans IIS (Panneau de Configuration > Outils d’Administration > Services Internet (IIS)) en faisant un clic droit et en sélectionnant Nouveau répertoire virtuel sur le liens « Sites Web par Défaut » dans l’arborescence de IIS. On accède ensuite au site par le navigateur en tapant l’adresse http://localhost/nom_répertoire_virtuel/ (Nous prendrons comme nom de répertoire virtuel « photos »). A. Fonctionnalités du site Partie Utilisateur Au lancement du site, l’utilisateur arrive sur la page d’accueil affichant le catalogue de photos c'est-à-dire la liste des photos disponibles sur le site. Un menu est présent sur la partie gauche de la page comprenant l’accès à la page d’accueil (catalogue de photos), à la recherche simple ou avancée. IUT de RODEZ Page 20 Projet Tuteuré LPD2I 07/06/2017 La liste des photos peut être triée par titre, par date, par auteur, par nombre de vue ou par taille. De même, elle peut être triée par ordre croissant ou décroissant par rapport au nombre de vue de la photo. Une case à cocher sert a afficher les miniatures de chaque image afin d’avoir une meilleure visualisation. Chaque page du catalogue contient une liste de 10 photos. Caractéristiques d’une photo Pour accéder à une photo en particulier, il suffit de cliquer sur son titre. La page spécifique d’une photo s’affiche alors présentant toutes ses caractéristiques. Aucune information ne peut être modifié puisqu’il ne s’agit que d’une visualisation. Nous pouvons cependant afficher l’image en taille réelle en cliquant sur sa miniature. Enfin un bouton est présent pour revenir sur la page précédente. Recherche simplifiée IUT de RODEZ Page 21 Projet Tuteuré LPD2I 07/06/2017 Il s’agit d’une recherche effectuée sur les champs (cf. ci-dessus) de la table PHOTOS donc présents quelque soit la façon dont une photo est représentée. IUT de RODEZ Page 22 Projet Tuteuré LPD2I 07/06/2017 Recherche avancée En plus de reprendre les critères de la recherche simplifiée, la recherche avancée propose tous les critères correspondants à tous les éléments des rubriques ainsi que les éléments de la catégorie Personne. Cette recherche s’adapte de manière dynamique aux différents changements qui peuvent se produire lors d’une nouvelle instanciation ou d’un rajout d’un élément dans une rubrique. Le résultat renvoyé peut alors contenir tous les critères de recherche ou juste un seul. Un pourcentage est calculé et affiché dans la liste de résultats pour présenter la pertinence du résultat trouvé. (ex : 100% indique que la photo contient tous les critères) IUT de RODEZ Page 23 Projet Tuteuré LPD2I 07/06/2017 Exemple de page de résultats: (critères : animaux, macrographie, journée) Partie Administrateur Cette partie est accessible à partir de l’adresse http://localhost/photos/admin/ Par défaut, l’administrateur arrive sur la page listant les images. Il s’agit de la même interface que celle définie pour l’utilisateur, cependant quelques éléments sont ajoutés. L’administrateur peut donc lui aussi voir les photos, les trier et voir les miniatures mais il a la possibilité aussi de supprimer (avec demande de confirmation), modifier ou ajouter une image avec les mêmes caractéristiques. Pour effectuer ces dernières actions, il lui suffit de cliquer sur le bouton correspondant. Dans cette partie, l’administrateur a accès à un menu, en haut à droite de la page. Il peut donc effectuer les actions suivantes : ajouter une photo, lister les photos, gérer les catégories, gérer les éléments des catégories, gérer les catégories de personnes, gérer les personnes, effacer les photos de la base de données, effacer les photos et le modèle de données de l’instance. ASP.NET n’arrive pas à récupérer les caractères accentués issus de composant Flash. Ceux-ci sont supprimés lors de l’ajout dans la base de données. Nous n’avons pas pu trouver de solution à ce problème. Gestion des catégories Il s’agit d’un composant Flash permettant d’ajouter, de supprimer, de modifier une catégorie et de changer l’ordre d’affichage de ces dernières. IUT de RODEZ Page 24 Projet Tuteuré LPD2I 07/06/2017 Pour ajouter une catégorie, on saisit le nom de la catégorie dans le champ « Catégorie » et on valide en cliquant sur le bouton OK. Pour supprimer une catégorie, il faut donc la sélectionner et cliquer sur la croix rouge. Si la catégorie que l’on souhaite supprimer possède des éléments, il ne sera pas possible de la supprimer (problème de clé étrangère). Pour modifier une catégorie, une fois celle-ci sélectionné, on modifie son nom dans le champ « Catégorie » et on valide en cliquant sur le bouton avec les flèches bleues. Les flèches haut et bas servent à modifier l’ordre d’affichage ; une fois la catégorie sélectionnée, on peut ainsi la faire descendre ou monter dans la liste. Une fois les modifications de ce composant effectuées, il suffit de cliquer sur le bouton Valider pour mettre à jour la liste des catégories dans la base de données. Gestion des éléments des catégories En cliquant sur le lien « Contenu des catégories » du menu, on accède à la liste des catégories de l’instance définie. On peut donc gérer le contenu d’une catégorie donnée en cliquant sur celle-ci. IUT de RODEZ Page 25 Projet Tuteuré LPD2I 07/06/2017 Le fonctionnement de ce composant Flash est similaire à celui de la gestion des catégories. Il ne s’agit plus de l’ajout de catégories mais d’éléments pour une catégorie donnée. Un élément est composé d’un nom, d’un type et d’une valeur par défaut. Le type peut être : Champ de saisie, Boîte à cocher, Liste déroulante ou Séparateur (le champ de la valeur par défaut disparaît dans le cas d’un séparateur, ainsi un séparateur permettra de faire apparaître des sous catégories). IUT de RODEZ Page 26 Projet Tuteuré LPD2I 07/06/2017 Gestion des catégories de personnes Il s’agit d’un composant Flash fonctionnant de manière similaire à la gestion de catégories. Les opérations effectuées portent donc sur des groupes de personnes. Gestion des personnes Le fonctionnement de ce composant est le même que celui de la gestion de contenu de catégorie. Il faut donc sélectionner un groupe de personnes. Les opérations d’ajout, de modification, de suppression et de déplacement sont donc possibles. IUT de RODEZ Page 27 Projet Tuteuré LPD2I 07/06/2017 Ajout d’une photo Cette partie est décomposée en plusieurs pages, pour une meilleure interface. Il est possible de naviguer entre toutes ces pages grâce aux boutons « Précédent » et « Suivant ». Ces pages sont donc fonction du nombre de catégories et de catégories de personnes existantes dans le modèle défini. Dans un premier temps, il faut donner des caractéristiques élémentaires de la photo. IUT de RODEZ Page 28 Projet Tuteuré LPD2I 07/06/2017 Dans le cas d’une page concernant une catégorie, on obtient un formulaire de ce genre : Dans le cas d’une page concernant une catégorie de personnes, on obtient un formulaire de ce genre : IUT de RODEZ Page 29 Projet Tuteuré LPD2I 07/06/2017 Une fois toutes les pages renseignées, l’image est ajoutée dans la base de données ainsi que toutes ces caractéristiques, une boîte de dialogue en informe l’utilisateur, et celui-ci est redirigé vers la page d’ajout de photo (pour un autre ajout si il le désire). Ajout d’une photo avec les mêmes caractéristiques qu’une photo déjà présente Cette opération est accessible depuis la liste des photos (dans la partie administration). En cliquant sur le bouton correspondant à une photo donnée, on peut donc ajouter une image possédant des informations similaires. Une page affichant toutes les informations de la photo déjà présente apparaît. On peut alors sélectionner une ou plusieurs catégories. Dans ce cas, seules les informations des catégories non sélectionnées seront demandées (sous la forme de plusieurs pages comme dans l’ajout simple d’une image) ; les informations des catégories sélectionnées seront quant à elles les mêmes que celles de l'image source, et ne seront pas demandées à l'utilisateur. Une fois la page de sélection des rubriques passée, l’utilisateur saisit les caractéristiques élémentaires de la photo (titre, chemin, auteur, description). Il est possible de sélectionner toutes les rubriques, alors seule la page demandant les informations élémentaires de la photo sera affichée. Une fois la photo ajoutée, une boîte de dialogue en informe l’utilisateur, et celui-ci est redirigé vers la page d’ajout de photo utilisant les mêmes caractéristiques (pour un autre ajout utilisant les mêmes caractéristiques si il le désire). IUT de RODEZ Page 30 Projet Tuteuré LPD2I 07/06/2017 Suppression des photos de la base de données Il est possible d’effacer toutes les images contenues dans la base de données. Les images sont donc effacées ainsi que les liens vers les catégories et les groupes de personnes. Les catégories, les éléments, les groupes et les personnes ne sont pas enlevés de la base de données. Un message de confirmation apparaît pour demander à l’utilisateur si il souhaite réellement effectuer cette opération. Suppression des photos et le modèle de données de l’instance L’ensemble des données de la structure sera effacé. Les images ainsi que toutes les informations relatives aux catégories et aux personnes. Un message de confirmation apparaît pour signaler à l’utilisateur si il souhaite réellement effectuer cette opération. B. Analyse critique 1. ASP.NET & MSDE Tout d’abord, une grande partie du temps a été nécessaire pour se documenter sur les technologies existantes et en particulier sur ASP.NET. Des informations ont pu être recueillies dans divers ouvrages ainsi que sur Internet. Cependant, ces informations restent assez générales. Nous avons donc dû effectuer de pages de tests pour apprendre le langage afin de faire divers traitements sur les images et leur stockage direct dans la base de données. Il a fallu aussi installer divers composants logiciels pour pouvoir développer cette application. L’installation de ces logiciels a été un véritable « parcours du combattant » en particulier MSDE pour lequel on trouve peu de documentation (cf. III dans la partie Réalisation). Nous avons rencontrés quelques difficultés pour l’ajout et l’affichage d’images puisque celles-ci sont stockées directement dans la base de données. En ASP.NET, il n’est pas possible de traiter une image (redimensionner, changement de format, …). Pour faire cela, il faut installer un composant externe payant. C’est pourquoi, l’affichage des miniatures dans notre application se fait en changeant les dimensions de l’image dans le code HTML. Les miniatures font donc le même poids que les images en taille réelle, mais cela ne pose pas de problème de bande passante vu que l’application sera utilisée en local. 2. Flash Nous n’avons pas pu résoudre le problème des caractères accentués ; si l’utilisateur saisi de tels caractères dans un composant Flash du site, l’ASP.NET ne peut récupérer ces caractères. Ces derniers ne sont donc pas stockés dans la base de données. Nous pensons que cela provient d’une norme de codage de caractères différente entre les deux langages. Le plugin Flash MX 6 et 7 pour Windows et Macintosh ne gère pas la méthode POST du protocole http. Seule la méthode GET est gérée. Les informations sont donc transmises du composant Flash vers la page ASP.NET par l’adresse de la page. L’adresse d’une page étant limitée, le nombre d’éléments des composants Flash est réduit à une vingtaine. Néanmoins, nous avons gardé les composants Flash car ils permettent un meilleur contrôle et vingt éléments par catégorie nous paraissent IUT de RODEZ Page 31 Projet Tuteuré LPD2I 07/06/2017 suffisants. De plus, une version du plugin gérant la méthode POST devrait sortir prochainement. 3. IIS Nous n’avons pas implémenté de mot de passe administrateur pour l’application. En effet, celui-ci doit être défini au niveau de IIS. L’accès à la partie administrateur se fait donc en ajoutant /admin/ à l’adresse du site. IUT de RODEZ Page 32 Projet Tuteuré LPD2I 07/06/2017 Conclusion Ce fut un projet relativement conséquent de part son envergure et sa complexité. Il a fallu maîtriser l’ASP.NET ainsi que l’Action Script afin de pouvoir élaborer cette application. Une grande partie du temps attribué pour le projet a été nécessaire à la recherche d’informations sur les technologies que nous avons utilisées mais aussi sur l’analyse du système d’information pour pouvoir représenter divers modèles constitués de rubriques différentes. Malgré l’ampleur du projet, nous pensons avoir réalisé une application correspondant au sujet. Nous avons par contre pas pu implémenter un ajout d’image répondant spécifiquement au besoin ; l’ajout de plusieurs images possédant les mêmes caractéristiques se fait image après image, il n’est pas possible de sélectionner un ensemble d’image pour les ajouter en une seule fois. Ceci aurait pu être implémenter si nous avions eu un peu plus de temps. Néanmoins, notre organisation nous a permis de respecter les délais que nous nous étions fixés et l’application nous semble complète. IUT de RODEZ Page 33 Projet Tuteuré LPD2I 07/06/2017 Annexes IUT de RODEZ Page 34 Projet Tuteuré LPD2I 07/06/2017 Exemple de code ASP.NET : Insertion d’une image à la base de données <% Response.Buffer = true %> <!-- #Include File="../connexion.aspx" --> <% 'Recuperation des variables du formulaire Dim Dim Dim Dim SourceFilePath as String = Request.form("photo") titrephoto as String = Request.form("titre") auteurphoto as String = Request.form("auteur") descriptionphoto as String = Request.form("description") Dim Dim Dim Dim Dim Dim action as String = Request.form("action") idphoto as String = Request.form("idphoto") chaine as String = Request.form("chaine") crt as String = Request.form("crt") nb as String = Request.form("nb") personne as String = Request.form("personne") descriptionphoto = Replace(descriptionphoto, "'", "&acute;") auteurphoto = Replace(auteurphoto, "'", "&acute;") titrephoto = Replace(titrephoto, "'", "&acute;") Dim erreur as String = "rien" Dim url as String if SourceFilePath <> Nothing and titrephoto <> Nothing and auteurphoto <> Nothing and descriptionphoto <> Nothing 'Récupération de l'extension du ficier Dim DotPosition As Integer = SourceFilePath.IndexOf(".") 'Positionné sur le point dans le chemin 'On se postionne juste après le point DotPosition +=1 Dim extension As String = SourceFilePath.SubString(DotPosition,SourceFilePath.length-DotPosition) if extension = "jpg" extension = "jpeg" end if Dim typephoto As String = "image/" + extension if extension = "jpg" OR extension = "jpeg" OR extension = "gif" OR extension = "png" OR extension = "bmp" Try 'Ouverture du fichier contenant la photo Dim fs As New System.IO.FileStream(SourceFilePath, IO.FileMode.Open, IO.FileAccess.Read) Dim taillephoto As Integer = fs.Length/1024 Dim currentImage as System.Drawing.Image = System.Drawing.Image.FromFile(SourceFilePath) 'Résolution horizontale Dim resolutionX As Integer = currentImage.Width 'Résolution verticale IUT de RODEZ Page 35 Projet Tuteuré LPD2I 07/06/2017 Dim resolutionY As Integer = currentImage.Height 'Résolution sous la forme "XXX*YYY" Dim resolution As String = resolutionX & "*" & resolutionY Dim datephoto As String = Format(Now, "dd/MM/yy") Dim NbVuephoto As Integer = 0 Dim cmd As New System.Data.SqlClient.SqlCommand("INSERT INTO photo (image, titre, description, taille, date, auteur, reso_horizontale, reso_verticale, type, nb_vue) VALUES (@Picture,'"+ titrephoto +"','"+ descriptionphoto +"',"+ Str(taillephoto) +",'"+ datephoto +"','"+ auteurphoto +"',"+ Str(resolutionX) +","+ Str(resolutionY) +",'"+ typephoto +"',"+ Str(NbVuephoto) +")", dbConnection) 'Creation de l'objet contenant la photo Dim b(fs.Length() - 1) As Byte 'Copie de la photo dans l'objet b fs.Read(b, 0, b.Length) fs.Close() 'Ajout de la photo a la base de données Dim P As New System.Data.SqlClient.SqlParameter("@Picture", System.Data.SqlDbType.Image, b.Length, System.Data.ParameterDirection.Input, False, 0, 0, Nothing, System.Data.DataRowVersion.Current, b) cmd.Parameters.Add(P) dbConnection.Open() cmd.ExecuteNonQuery() dbConnection.Close() Catch erreur="droits" GoTo Droits End try else erreur = "pasphoto" end if else erreur = "noncomplet" end if Droits: if erreur <> "rien" 'On remplace les quotes par leur code HTML afin de ne pas generer d'erreur dans la requete SQL descriptionphoto = Replace(descriptionphoto, "&acute;", "'") auteurphoto = Replace(auteurphoto,"&acute;", "'") titrephoto = Replace(titrephoto, "&acute;", "'") url = "aj_photo.aspx?erreur="+erreur+"&photo="+SourceFilePath+"&auteur="+auteurph oto+"&titre="+titrephoto+"&description="+descriptionphoto+"&chaine="+chaine +"&personne="+personne+"&idphoto="+idphoto+"&nb="+nb Response.redirect (url) end if %> <% IUT de RODEZ Page 36 Projet Tuteuré LPD2I 07/06/2017 Dim ds As System.Data.DataSet Dim cur(,) as string Dim i as Integer ds = sql_query("SELECT max(id_photo) FROM photo") cur = fetch_array(ds) Dim id_photo as String = val(cur,0,0) 'Redirection vers la page qui demande les caracteristiques pour l'ajout d'une autre photo url = "infos_photo.aspx?id=" + id_photo + "&courant=0&max=" + Request.form("max") + "&maxp=" + Request.form("maxp") + "&chaine="+chaine+"&crt="+crt+"&idphoto="+idphoto+"&nombre="+nb+"&personne= "+personne Response.redirect (url) %> IUT de RODEZ Page 37 Projet Tuteuré LPD2I 07/06/2017 Exemple de code ASP.NET : Affichage d’une image de la base de données <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.SqlClient" %> <!-- #Include File="connexion.aspx" --> <% 'Recuperation de l'id de la photo a afficher dim id_photo as string = Request.QueryString("id") dbConnection.open() Response.Expires = 0 Response.Buffer = True Response.Clear() 'Recuperation de la photo Dim cmd As New SqlCommand("SELECT * FROM photo WHERE id_photo="+id_photo, dbConnection) Dim PictureCol As Integer = 1 'Execution de la requete Dim dr As SqlDataReader = cmd.ExecuteReader() dr.Read() 'Recuperation du type de la photo (jpeg, gif, png, ...) Dim type As String = dr.GetString("type") 'Association du type de la page au type de la photo Response.ContentType = type Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte dr.GetBytes(PictureCol, 0, b, 0, b.Length) dr.Close() dbConnection.close() 'Affichage de la photo dans la page Response.BinaryWrite(b) %> IUT de RODEZ Page 38 Projet Tuteuré LPD2I 07/06/2017 Exemple de code ASP.NET : Affichage complet d’une image <!-- #Include File="header.aspx" --> <% 'Recuperation de l'id de la photo a afficher Dim id as String = Request.QueryString("id") 'Mise a jour du nombre de vues de la photo sql_query("UPDATE photo SET nb_vue=nb_vue+1 WHERE id_photo="+id) %> <center> <table border="0" cellpadding="0" cellspacing="0" width="716"> <tr> <td width="300"><font size="+1"><b>Photo</b></font> <table border=1 bordercolor="white" cellpadding="3" cellspacing="0" width="100%" height="100%"> <tr> <td> <% Dim ds As System.Data.DataSet Dim cur(,) as string Dim i as Integer 'Recuperation des informations de la photo ds = sql_query("SELECT * from photo WHERE id_photo=" + id) cur = fetch_array(ds) 'On met la date dans un format adapte Dim ladate as string = val(cur, 0, "date").SubString(0,10) 'Affichage des informations elementaires des photos Response.write("<b>Titre :</b> " + val(cur, 0, "titre") + "<br>") Response.write("<b>Auteur :</b> " + val(cur, 0, "auteur") + "<br>") Response.write("<b>Date d'ajout :</b> " + ladate + "<br>") Response.write("<b>Taille :</b> " + val(cur, 0, "taille") + " ko<br>") Response.write("<b>Résolution :</b> " + val(cur, 0, "reso_horizontale") + "*" + val(cur, 0, "reso_verticale") + "<br>" ) Response.write("<b>Nombre de vue :</b> " + val(cur, 0, "nb_vue") + "<br>") Response.write("<b>Description :</b> " + val(cur, 0, "description") + "<br>") %> </td> </tr> </table> <br> <% Dim Dim Dim Dim Dim Dim Dim Dim ds2 As System.Data.DataSet cur2(,) as string ds3 As System.Data.DataSet cur3(,) as string j as Integer url as string check as string sep as Integer = 1 IUT de RODEZ Page 39 Projet Tuteuré LPD2I 07/06/2017 'On recupere toute les rubriques ds = sql_query("SELECT * FROM rubrique ORDER BY ordre_affichage ASC") cur = fetch_array(ds) For i=0 to nbrows(ds)-1 %> <font size="+1"><b><%=val(cur, i, "libelle")%></b></font> <table border=1 bordercolor="white" cellpadding="3" cellspacing="0" width="100%" height="100%"> <tr> <td> <table border=0 width=100%> <% 'On recupere les elements de la rubrique courante ds2 = sql_query("SELECT * FROM elt_rubrique WHERE id_rubrique=" + val(cur, i, "id_rubrique") + " ORDER BY ordre_affichage ASC") cur2 = fetch_array(ds2) For j=0 to nbrows(ds2)-1 if val(cur2, j, "type") <> "p" 'Si l'element n'est pas un separateur Response.write("<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+val(cur2, j, "libelle")+ " : </td><td>") 'On recupere sa valeur url = "SELECT choix FROM caracterise WHERE id_photo=" + id + " AND id_rubrique=" + val(cur, i, "id_rubrique") + " AND id_elt_rubrique=" + val(cur2, j, "id_elt_rubrique") ds3 = sql_query(url) cur3 = fetch_array(ds3) if val(cur2, j, "type") <> "b" 'C'est un champ de saisie ou une liste deroulante Response.write("<input type=text size=10 value='"+val(cur3, 0, "choix")+"' disabled=disabled></td></tr>") else 'C'est une boite a cocher if val(cur3, 0, "choix") = "ok" check = "CHECKED" else check = " " end if Response.write("<input type=checkbox " + check + " disabled=disabled></td></tr>") end if else 'C'est un separateur Response.write("<tr><td colspan=2 bgcolor=#3C5D8A><font color=white>"+val(cur2, j, "libelle")+ "</font></td></tr>") end if Next %> </table> </td> </tr> </table> <br> <% Next IUT de RODEZ Page 40 Projet Tuteuré LPD2I 07/06/2017 %> </td> <td width="16">&nbsp;</td> <td width="400" valign="top"><font size="+1"><b>Miniature</b></font> <table border=1 bordercolor="white" cellpadding="3" cellspacing="0" width="100%"> <tr> <td> <a href="afficher.aspx?id=<%=id%>" target="_blank"><img src="afficher.aspx?id=<%=id%>" width="394" border="0"></a><br><center>Cliquer sur l'image pour l'afficher en taille réelle</center> </td> </tr> </table> <br> <% 'On recupere toutes les categories de personne ds = sql_query("SELECT * FROM cat_personne ORDER BY ordre_affichage ASC") cur = fetch_array(ds) if nbrows(ds) > 0 %> <font size="+1"><b>Personnes</b></font> <table border=1 bordercolor="white" cellpadding="3" cellspacing="0" width="100%"> <tr valign=top> <td valign=top> <center><table border=0 width="90%"><tr><td> <%For i=0 to nbrows(ds)-1%> <font size="+0"><b><%=val(cur, i, "libelle")%></b></font> <table border=1 bordercolor="white" cellpadding="3" cellspacing="0" width="100%" height="100%"> <tr> <td> <table border=0 width=100%> <% 'On recupere les personnes de la categorie de personnes courante ds2 = sql_query("SELECT * FROM personne WHERE id_cat_personne=" + val(cur, i, "id_cat_personne") + " ORDER BY ordre_affichage ASC") cur2 = fetch_array(ds2) For j=0 to nbrows(ds2)-1 if val(cur2, j, "type") <> "p" 'Si l'element n'est pas un separateur Response.write("<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+val(cur2, j, "nom")+ " : </td><td>") 'On recupere la valeur de la personne url = "SELECT choix FROM figure WHERE id_photo=" + id + " AND id_cat_personne=" + val(cur, i, "id_cat_personne") + " AND id_personne=" + val(cur2, j, "id_personne") ds3 = sql_query(url) cur3 = fetch_array(ds3) if val(cur2, j, "type") <> "b" 'Champ de saisie ou liste deroulante IUT de RODEZ Page 41 Projet Tuteuré LPD2I 07/06/2017 Response.write("<input type=text size=10 value='"+val(cur3, 0, "choix")+"' disabled=disabled></td></tr>") else 'Boite a cocher if val(cur3, 0, "choix") = "ok" check = "CHECKED" else check = " " end if Response.write("<input type=checkbox " + check + " disabled=disabled></td></tr>") end if else 'Separateur Response.write("<tr><td colspan=2 bgcolor=#3C5D8A><font color=white>"+val(cur2, j, "nom")+ "</font></td></tr>") end if Next %> </table> </td> </tr> </table> <br> <% Next %> </td></tr></table></center> </td> </tr> </table> <%end if%> </td> </tr> </table> </center><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="BUTTON" value="< Précédent" onClick="history.go(-1)" name="BUTTON"> <!-- #Include File="footer.aspx" --> IUT de RODEZ Page 42 Projet Tuteuré LPD2I 07/06/2017 Exemple de code Action Script (Flash) : Composant de gestion des catégories //Création d’objets, pour les actions sur boutons form = new Object(); enhaut = new Object(); enbas = new Object(); lasuppr = new Object(); validation = new Object(); modification = new Object(); laliste = new Object(); elt_selec = new int(); elt_selec = -1; //Création du tableau contenant la liste des catégories monFD = new Array(); //Initialisation des styles MsgErr.setStyle("fontWeight", "bold"); //Affichage des msg d'erreur en gras BtnAdd.setStyle("themeColor", "haloOrange"); //Halo Orange autour du bouton OK Haut.setStyle("themeColor", "haloOrange"); //Halo Orange autour du bouton haut Bas.setStyle("themeColor", "haloOrange"); //Halo Orange autour du bouton bas Suppr.setStyle("themeColor", "haloOrange"); //Halo Orange autour du bouton suppr Valider.setStyle("themeColor", "haloOrange"); //Halo Orange autour du bouton suppr ListeMots.setStyle("rollOverColor", "0x85B2F0"); //Lorsque la souris survole un elt de la liste, celui-ci est entouré de bleu clair ListeMots.setStyle("selectionColor", "0x5F8AC4"); //Lorsque un elt de la liste est selec, il est encadré de bleu ListeMots.setStyle("textSelectedColor", "0xFFFFFF"); //Lorsque un elt de la liste est selec, il devient blanc (plus lisible sur fond bleu) //On teste si des catégories sont passées en paramètre if (_root.mots != undefined){ //Si oui, on les ajoute au tableau lesmots = _root.mots.split(";"); for (i = 0; i < lesmots.length; i++){ tablo = lesmots[i].split("@"); monFD.addItem({ label: tablo[0], data: tablo[1], del: tablo[2]}); //On ajoute au tableau } ListeMots.dataProvider = monFD; //On reinitialise IUT de RODEZ Page 43 Projet Tuteuré LPD2I 07/06/2017 } //Si le composant est rechargé suite à une modification, on informe l'utilisateur que la modif est effectuée if (_root.action == "modif"){ MsgErr.setStyle("color", "red"); MsgErr.text = "Catégories mises à jour"; } //Si l'utilisateur clique sur le bouton "OK" form.click = function(objEvnt){ MsgErr.text = ""; //on réinitialise le msg d'erreur if (Mot.text != ""){ //si une catégorie a été entrée for(i = 0; i < monFD.length; i++){ //on teste si la catégorie n'est pas déjà présente dans la liste if(monFD[i].label == Mot.text){ MsgErr.setStyle("color", "red"); MsgErr.text = "Catégorie déjà présente"; //si elle est présente on affiche un msg d'erreur erreur = 1; } } if (erreur != 1){ //s'il n'y a pas d'erreur, on ajoute la catégorie à la liste if (monFD.length == 0){ lid = 0; }else{ //On créé l'id de l'element a ajouter lid = monFD[0].data; for (i = 1; i < monFD.length; i++){ if (monFD[i].data > lid){ lid = monFD[i].data; } } lid++; } monFD.addItem({ label: Mot.text, data: lid, del: "o"}); ListeMots.dataProvider = monFD; } Mot.text=""; //on efface le champ contenant la catégorie ajoutée Mot.setFocus(); //on replace le focus sur le champ pour taper la catégorie } } BtnAdd.addEventListener("click", form); //Si l'utilisateur clique sur le flèche "remonter" enhaut.click = function(objEvnt){ MsgErr.text = ""; //On reinitialise le msg d'erreur IUT de RODEZ Page 44 Projet Tuteuré LPD2I 07/06/2017 var selIndex = ListeMots.selectedIndex; //On recupère l'indice de la catégorie selectionnée if (selIndex == undefined){ //Si aucune catégorie selectionnée => erreur MsgErr.setStyle("color", "red"); MsgErr.text = "Vous devez sélectionner une catégorie"; }else if(selIndex == 0){ //Si l'elt selectionné est le premier elt => erreur MsgErr.setStyle("color", "red"); MsgErr.text = "Vous ne pouvez pas remonter la\npremiere catégorie"; }else{ //Sinon on fait remonter la catégorie sélectionnée, et on descend l'element au dessus provlabel = monFD[selIndex].label; provdata = monFD[selIndex].data; provdel = monFD[selIndex].del; monFD[selIndex].label = monFD[selIndex-1].label; monFD[selIndex].data = monFD[selIndex-1].data; monFD[selIndex].del = monFD[selIndex-1].del; monFD[selIndex-1].label = provlabel; monFD[selIndex-1].data = provdata; monFD[selIndex-1].del = provdel; ListeMots.dataProvider = monFD; //on remet la liste à jour ListeMots.selectedIndex = selIndex-1; //on selectionne la catégorie qui a été remontée } } Haut.addEventListener("click", enhaut); //Si l'utilisateur clique sur le flèche "descendre" enbas.click = function(objEvnt){ MsgErr.text = ""; //On reinitialise le msg d'erreur var selIndex = ListeMots.selectedIndex; //On recupère l'indice de la catégorie sélectionnée if (selIndex == undefined){ //Si aucune catégorie selectionnée => erreur MsgErr.setStyle("color", "red"); MsgErr.text = "Vous devez sélectionner une catégorie"; }else if(selIndex == monFD.length-1){ //Si la catégorie selectionnée est la derniere => erreur IUT de RODEZ Page 45 Projet Tuteuré LPD2I 07/06/2017 MsgErr.setStyle("color", "red"); MsgErr.text = "Vous ne pouvez pas descendre la\ndernière catégorie"; }else{ //Sinon on fait descndre la catégorie sélectionnée, et on remonte la catégorie au dessus provlabel = monFD[selIndex].label; provdata = monFD[selIndex].data; provdel = monFD[selIndex].del; monFD[selIndex].label = monFD[selIndex+1].label; monFD[selIndex].data = monFD[selIndex+1].data; monFD[selIndex].del = monFD[selIndex+1].del; monFD[selIndex+1].label = provlabel; monFD[selIndex+1].data = provdata; monFD[selIndex+1].del = provdel; ListeMots.dataProvider = monFD; //on remet la liste à jour ListeMots.selectedIndex = selIndex+1; //on selectionne la catégorie qui a été descendu } } Bas.addEventListener("click", enbas); //Si l'utilisateur clique sur le bouton "supprimer" lasuppr.click = function(objEvnt){ MsgErr.text = ""; //On reinitialise le msg d'erreur var selIndex = ListeMots.selectedIndex; //On recupère l'indice de la catégorie selectionnée if (selIndex == undefined){ //Si aucune catégorie selectionnée => erreur MsgErr.setStyle("color", "red"); MsgErr.text = "Vous devez sélectionner une catégorie"; }else{ //Sinon, on supprime la catégorie if (monFD[selIndex].del == "o"){ //Si il n'y a pas de probleme de clé étrangère monFD2 = new Array(); for (i = 0; i < monFD.length; i++){ //On parcours le tableau de categories if(i != selIndex){ //On copie toutes les catégories, sauf la catégorie à supprimer, dans un tableau provisoire monFD2.addItem({ label: monFD[i].label, data: monFD[i].data, del: monFD[i].del}); IUT de RODEZ Page 46 Projet Tuteuré LPD2I 07/06/2017 } } monFD = new Array(); //On reinitialise le tableau for (i = 0; i < monFD2.length; i++){ monFD.addItem({ label: monFD2[i].label, data: monFD2[i].data, del: monFD2[i].del}); //On copie la catégorie dans le tableau de catégories } ListeMots.dataProvider = monFD; //On remet la liste à jour }else{ MsgErr.setStyle("color", "red"); MsgErr.text = "Vous ne pouvez supprmimer cette\ncatégorie tant qu'elle contient\ndes éléments"; } } } Suppr.addEventListener("click", lasuppr); //Si l'utilisateur clique sur le bouton de validation validation.click = function(objEvnt){ variable = new LoadVars(); variable.chaine = _root.page; variable.chaine = variable.chaine + "?action=modif&chaine="; for(i = 0; i < monFD.length; i++){ //On créé la chaine contenant les catégories, leurs ordre, et leur id variable.chaine = variable.chaine + monFD[i].label + "@" + monFD[i].data if (i < monFD.length - 1){ variable.chaine = variable.chaine + ";"; } } getUrl(variable.chaine, "_self", "POST"); //On appelle la page qui modifira la base de données } Valider.addEventListener("click", validation); laliste.change = function(objEvt){ if (ListeMots.selectedIndex != undefined){ elt_selec = ListeMots.selectedIndex Mot.text = monFD[elt_selec].label; MsgErr.setStyle("color", "white"); MsgErr.text = "Après avoir modifié l'intitulé de la\ncatégorie, cliquez sur la\nflèche bleue"; } } IUT de RODEZ Page 47 Projet Tuteuré LPD2I 07/06/2017 ListeMots.addEventListener("change", laliste); modification.click = function(objEvnt){ for(i = 0; i < monFD.length; i++){ //on teste si la catégorie n'est pas déjà présente dans la liste if(monFD[i].label == Mot.text){ MsgErr.setStyle("color", "red"); MsgErr.text = "Catégorie déjà présente"; //si elle est présente on affiche un msg d'erreur erreur = 1; } } if (erreur != 1){ monFD[elt_selec].label = Mot.text; ListeMots.dataProvider = monFD; Mot.text = ""; Mot.setFocus(); } } Modif.addEventListener("click", modification); Tableau comparatif des logiciels existants dans le domaine des SGBG multimedia : Tableau 1 : IDENTITE DE L'ENTREPRISE Gesco Site Web www.gesco.fr www.idsfrance.co www.algoba.co www.dfim m fr.com www.archimed.f r LOGICIEL . . . . . Editeur GESCO IDS ALGOBA DFI ARCHIMED Produit Gesco-Media Pictbase 4.9 Prix (monoposte) . 1500 € (+ 600 € formation) Interface Web Oui Gesco Web Oui IUT de RODEZ Pictbase DFI Archimed Orphéa Orphéa Studio DFI -Pack 3 . . Oui Sim 1.2 . Oui DFI-Web Oui Sim Web Pack Page 48 Projet Tuteuré LPD2I 07/06/2017 Type de documents Photos, sons, Images, photos... Images, gérés vidéos, photos bureautiques numériques, vidéos, pdf Photos, documents multimédia images, graphiques, photos, Autres . . . . . CONFIGURATION . . . . . Configuration . (système d'exploitation, environnement, Navigateur,réseau) Windows Windows 95/98/ PC Mac Unix Windows 2000 SQL Server Netscape 4.5 Version 2000 ME/NT4/200 (min) Internet Internet 0 Explorer 5.0 Information Serveur (IIS) (min) Navigateur standard Power Macintosh Interface Web Autres . . . . . CREATION D'UNE . BASE . . . . Champs Paramètrables contrôlés Paramètrable Paramètrables et Paramètrables Paramètrables Paramètrables s contrôlés ou contrôlés Relation entre les bases Oui . . Oui Oui ACQUISITION ET . SAISIE . . . . Thesaurus Oui Oui Oui (synonymes, homonymes) Oui Oui Import/Export Oui Oui Oui Oui Formats d'images Tous Tiff, jpeg... Numérisation Oui Jpeg, tiff, bmp,.. 50 formats graphiques gérés . Oui Oui . Oui Oui INDEXATION . . . . . Mode d'indexation Thésaurus, Texte intégral (mots- clés, texte liste d'index intégral...) , aide à la saisie Mots clés, Thésaurus, texte intégral lexique, par en temps réel mots clés, termes associés Mots clés STOCKAGE . . IUT de RODEZ . . . Page 49 Projet Tuteuré LPD2I 07/06/2017 Sélection images (chutier, panier, lot...) Oui Oui Oui Oui Oui Autres . . . . . RECHERCHE . . . . . Mode de recherche Mots clés (texte intégral...) Texte intégral Mots clés, Texte intégral Mots clés et texte intégral, mots clés texte intégral descripteur Tri Oui Oui Oui . Oui CONSULTATION ET AFFICHAGE . . . . . Mode d'affichage des résultats Mosaïque , plein écran, zoom, 5 modèles : Liste et mixte, prédéfini, mosaïque tableau, imagette, double Mosaïque, Diffusion d'une imagette, liste même image sous différents types de formats . Oui, zoom, Outils de retouche Oui, zoom d'image (rotation, rotation... zoom, redimensionnement. ..) Oui, zoom, Oui, redimensionneme résolutions nt, rotation multiples, zoom, niveau de gris, rotation, redimension de l'image Autres Zoom qui devient une nouvelle image . . . IMPRESSION . . . . Mode d'impression Page, sélection 30 modèles personnalisation Fiche, panier Autres . . . . . GESTION . . . . . Gestions des Oui utilisateurs (accès, droits...) Oui Oui Oui Oui Gestion . Oui commerciale des stocks (commande, emprunt...) Oui Oui Oui . Gestion et publication Web Oui Oui Oui Oui Oui Autres Gestion par mails . . . . SÉCURISATION . . . . . IUT de RODEZ rotation... . . Mosaïque, 1/4 . page, pleine page Page 50 Projet Tuteuré LPD2I 07/06/2017 Outils de sécurisation Mot de passe Mot de passe Watermarking Multi, mot de passe, contrôles adresse IP , date de validité Mot de passe SERVICES . . . . Maintenance, assistance Oui . . Oui Oui Oui Formation Oui . Oui Oui Oui Administration Oui Oui Oui Oui Oui Analyse des besoins Audit, conseils Conseil, cahier Conseils, études études, des charges, analyses, statistiques statistiques... Analyse des besoins Analyser, (conseils, audit, développer, cahier des charges, intégrer... Statistiques..) Tableau 2 : IDENTITE DE L'ENTREPRISE Cincom Site Web Ajaris Alexandrie www.cincom.fr www.aidel.com www.orkis.com www.gbconcept.com www.dipsystemes.fr LOGICIEL . . . . . Editeur CINCOM AIDEL ORKIS GB CONCEPT DIP-SYSTEME Produit Cindoc Superdoc Premium Ajaris Pro 3.1 Alexandrie 5.5 Prix (monoposte) . Environ 5030 € 2120 € pour le (comprends logiciel Ajaris logiciel superdoc Pro3 et webpub + maintenance + formation) . Dip Photothèque . Interface Web Oui Oui, grâce a Superdoc Web Oui Oui, Dip-Web Type de documents gérés Tous types de documents Tous documents Photo image fixe Tous types de multimédia et animée documents Images, diapos, photos ... Autres . . . . . CONFIGURATION . . . . . IUT de RODEZ Aidel Oui Dip_systèmes Page 51 Projet Tuteuré LPD2I 07/06/2017 Configuration (système d'exploitation, environnement, Navigateur,réseau) Windows Windows 95-98 Windows 95,98, Compatible avec NT4/2000/98 NT UNIX Mac OS8-9 (client seul) MacOS 8.5 et supérieur Architecture 2000, XP Netscape client/serveur Windows Navigator, en Netscape Windows NT4 98/millenium environnement SP4 ou plus Communicator, /NT4/2000 windows NT, Internet Explorer 2000, UNIX, Microsoft ou serveur de Internet fichier Explorer 5.0 (Windows NT, Novell...) Autres . . . Au sein d'un même . réseau, les postes de travail peuvent fonctionner avec des systèmes d'exploitation différents. ex : windows NT +MAc CREATION D'UNE BASE . . . . . Champs Paramètrables contrôlés Paramètrables Paramètrables Paramètrables ou contrôlés selon le client Paramètrables Paramètrables Relation entre les bases Oui Oui Oui Oui Oui ACQUISITION ET SAISIE . . . . . Thésaurus Oui Oui Oui Oui Oui (graphique) Import/Export Oui Oui Oui Oui Oui Formats d'images Tous 30 formats de fichiers Tiff, pict, png, jpeg, photoCd Kodak... Tous Jpeg, photo CD ... Numérisation Oui Oui Oui Oui Oui INDEXATION . . . . . Mode d'indexation (mots- clés, texte intégral...) Mots clés et texte intégral Indexation par mot clé Texte intégral, Mots clés mots clés, saisie libre Mots clés et texte intégral STOCKAGE . . . . . Oui réunis dans un dossier Oui Sélection images Oui, lots ou (chutier, panier, lot...) albums IUT de RODEZ Sauvegarde des Oui fichiers + réutilisation Page 52 Projet Tuteuré LPD2I 07/06/2017 Autres . . Image archivée . sur le volume choisi (basse déf.) . RECHERCHE . . . . . Mode de recherche (texte intégral...) Mots clés et texte intégral Texte libre et Texte intégral + mots clés mots clés Texte intégral Texte intégral Tri . Plusieurs types Oui de tri Oui Oui, par pertinence . . . CONSULTATION ET . AFFICHAGE Mode d'affichage des Paramètrables résultats selon le client 4 types d'affichages . Planches Imagettes, contacts, listes, planches contacts, imagettes, visualisation plein écran Affichage par mosaïque d'images associées à la fiche vignette, imagette... Outils de retouche Zoom Zoom, rotation d'image (rotation, Paramètrables 90 degré... zoom, redimentionnement...) Zoom, rotation 90 degré, . Zoom , rotation 90 degré, loupe Autres . . . . . IMPRESSION . . . . . Mode d'impression Module de diffusion sur CD Rom Page, Page, Impression d'un Impression enregistrement, enregistrement, catalogue d'images d'un état des sélection sélection index Autres . Envoi de rapport . par mail . . GESTION . . . . Gestions des utilisateurs (accès, droits...) Oui Nombre d'accès Oui limité Oui Oui Oui édition Oui (suivi des d'état des prêt retour, bon de en cours commande...) Oui . - fenêtre de Rapport - fenêtre d'édition - fenêtre d'affichage - fenêtre d'images Gestion . commerciale Oui des stocks (commande, emprunt...) IUT de RODEZ . Page 53 Projet Tuteuré LPD2I 07/06/2017 Gestion et publication Oui Web Oui Oui Oui Oui Autres . . . . . SÉCURISATION . . . . . Outils de sécurisation Mot de passe Mot de passe Watermarking, mot de passe Mot de passe Mot de passe SERVICES . . . . . Maintenance, assistance Oui Oui Oui Oui Oui Formation Oui Oui Oui Oui . Administration Oui . Oui Oui Oui Analyse des besoins (conseils, audit, cahier des charges, Statistiques..) Audit, conseils, Oui assistance Audit, conception de page web, statistiques Etudes des besoins, Analyses des cahier des charges, besoins, statistiques statistiques Etude d’un logiciel précis : Ce logiciel a été crée avant tout pour optimiser la gestion de photothèques et de catalogues électroniques. PictBase V5 a été spécialement conçu pour pouvoir être utilisé par toute personne sans compétence approfondie : a. tous les menus sont contextuels et explicites b. nombreux assistants d’utilisation c. interface didactique Cette solution logicielle permet de traiter tous les documents numériques depuis l’acquisition jusqu'à leur exploitation. Plus de 60 formats de documents sont supportés dont les formats vectoriels de types dxf, Shape, etc. Principales fonctionnalités : Définition illimitée des champs des catalogues : Avec PictBase V5, on est libre de créer tous les champs nécessaires à la construction de nos catalogues sans limite. Le regroupement de ces champs nous permet de définir des structures réutilisables pour la création de nouveaux catalogues. Personnalisation des formulaires : L’éditeur WYSIWYG (What You See Is What You Get) de formulaires de PictBase V5 nous permet de créer un grand nombre de formulaires de manière très intuitive. Ces formulaires sont exploités pour la saisie et le partage des informations. Chaîne d’acquisition rapide : IUT de RODEZ Page 54 Projet Tuteuré LPD2I 07/06/2017 PictBase V5 propose toutes les fonctions pour acquérir ou récupérer nos documents depuis un scanner, un appareil photo numérique ou une banque d’images existante. Nos documents s’associent instantanément aux catalogues de notre choix et sont indexés selon nos critères. Création et association de mots-clés : Nous pouvons décider librement des mots-clés correspondant à notre métier et nécessaire à la classification de nos documents. Ces mots-clés nous permettront de faire des recherches performantes et adaptées à votre environnement. Gestion des requêtes et mémorisation : Avec PictBase V5, nous disposons de diverses fonctions de recherche pouvant porter sur des valeurs de champs ou des mots-clés que nous aurons créés : recherche simple ou en cascade. Certaines de ces recherches peuvent être mémorisées pour une réutilisation ultérieure. Le résultat d’une recherche peut également être mémorisé grâce à la création d’un panier permettant de regrouper une sélection de fiches. Indexation spatiale : PictBase V5 intègre une fonction de localisation permettant d’indexer nos documents sur des supports cartographiques ou images, tels que des schémas, des plans. Les sélections de documents sont réalisées directement sur ces supports. Publication et impression tous formats : Nous pouvons publier nos catalogues sous différents formats : diaporama Web, présentation Microsoft® PowerPoint®, rapport Microsoft® Excel, site Web Internet ou Intranet (option). Pour les impressions, un module tout en un fournit un aperçu en temps réel de la mise en page. Multi contribution : Avec la configuration multipostes de PictBase V5, tous nos fonds documentaires peuvent être gérés par un ou plusieurs administrateurs et alimentés par un collège de contributeurs. Configuration minimale requise Système d’exploitation : Windows® NT, 2000 ou XP Processeur : 600 Mhz ou plus Mémoire vive : 128 Mo RAM Espace disque dur : 95 Mo Résolution d’écran : 1024 x 768 Espace disque nécessaire pour l’installation de PictBase V5. IUT de RODEZ Page 55 Projet Tuteuré LPD2I 07/06/2017 SOURCES : Livres : Georges Gardarin, Interne/intranet et bases de données, Eyrolles, 1999 Lynne Dunckley, Multimedia Databases, Addison-Wesley, 2003 Thierry Thaureaux de Levare, ADO .NET, Micro Application, 2002 Microsoft Press, SQL Server 7.0, 2002 Thomas Petillon, ASP .NET, Les cahiers du programmeur, Eyrolles, 2003 Sites Internet : Microsoft MSDN ; http://www.microsoft.com/france/msdn/ Microsoft ASP .NET ; www.asp.net/ ASP / ASP .NET Codes Sources ; www.aspfr.com/ Apprendre à programmer en ASP, PHP, .NET ; www.asp-php.net/ Developpez.com Club des développeurs; www.developpez.com Images numériques http://www.ccr.jussieu.fr/urfist/image_numerique/Image_numerique1.htm IUT de RODEZ Page 56