Test de Delphi Prism 2011

Utilisateur professionnel de Borland Delphi 7, j’ai voulu tester la dernière version de Delphi : Delphi Prism 2011.

Dépaysement complet comparé à la version 7. Certes le langage est semblable, mais la c’est du .Net. Delphi est intégré lors de l’installation à Microsoft Visual Studio et MonoDevelop. Il est donc possible de compiler ces programmes pour Windows, Mac OS X et Linux.

Menu programmes

Mon “petit projet” de test a été assez simple : géoréférencer mes photos de vacances au Ru d’Enfer sur Flickr.

En effet, lors de ma ballade, j’ai emporté avec moi mon GPS pour qu’il enregistre mon parcours. Puis lors de mon retour, j’ai enregistré dans chaque photos la position où elle a été prise à l’aide du logiciel Microsoft Pro Photo Tools.

Une fois les photos envoyées sur Flickr, j’ai récupéré deux API :

  1. ExifLibrary for .NET, pour récupérer les informations GPS stockées dans les photos sur mon disque dur.
  2. Flickr.Net API, pour mettre à jour le géoréférencement des photos en ligne.

Puis, je me suis lancé dans le projet.

Nouveau projet

Pour faire simple, j’ai décidé de me lancer dans une application console.

Code source

Et voici un aperçu de la tête de mon code.

Et puisque je suis sympa, je donne la source du projet :

namespace Géoréférencement_Flickr;

interface

uses
  System.IO, ExifLibrary, FlickrNet;

type
  ConsoleApp = class
  public
    class method Main(args: array of string);
  end;

implementation

class method ConsoleApp.Main(args: array of string);
const
  Chemin = 'C:\Documents and Settings\Lionel\Mes documents\Mes images\Vacances à Montréjeau\Randonnée au Ru';
  APIKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
  Secret = 'XXXXXXXXXXXXXXXX';
  IDUtilisateur = '97659407@N00';
  IDAlbum = '72157624711113142';
var
  ConFlickr: Flickr;
  Autentification: Auth;
  AlbumFlickr: PhotosetPhotoCollection;
  InfoImage: ExifFile;
  Latitude,Longitude: GPSLatitudeLongitude;
  TempFrob, FlickrUrl, CheminPhoto: String;
  i: Integer;
begin
  Console.WriteLine('Bonjour !');
  Console.WriteLine('Je vais tenter de me connecter à Flickr.');

  // Connexion à Flickr
  ConFlickr := new Flickr(APIKey, Secret);

  Console.WriteLine('Ok. Maintenant je vais essayer de me connecter à votre compte.');

  // Autentification Flickr
  TempFrob := ConFlickr.AuthGetFrob();
  FlickrUrl := ConFlickr.AuthCalcUrl(TempFrob, AuthLevel.Write);
  System.Diagnostics.Process.Start(FlickrUrl);
  Console.WriteLine('Une fois que vous m''avez donné l''autorisation dans le navigateur,'#13#10'tapez sur Entrée.');
  Console.ReadLine();
  Autentification := ConFlickr.AuthGetToken(TempFrob);

  Console.WriteLine('C''est bon, j''ai votre identifiant : {0} - {1}',
    [Autentification.User.UserName, Autentification.User.UserId]);

  Console.WriteLine('Je vais jeter un coup d''œil sur les photos de l''album.');
  AlbumFlickr := ConFlickr.PhotosetsGetPhotos(IDAlbum);

  for i := 0 to AlbumFlickr.Count - 1 do
  begin
    Console.WriteLine('"{0}" - {1}  {2}',
      [AlbumFlickr[i].Title, AlbumFlickr[i].Latitude, AlbumFlickr[i].Longitude]);

    if (AlbumFlickr[i].Latitude = 0) and (AlbumFlickr[i].Longitude = 0) then
    begin
      Console.WriteLine('La photo n''a pas l''air d''être géoréférencée.');
      Console.WriteLine('Je vais la chercher en local...');

      try
        CheminPhoto := Chemin + AlbumFlickr[i].Title + '.jpg';

        if not File.Exists(CheminPhoto) then
        begin
          CheminPhoto := Chemin + 'Isabelle' + AlbumFlickr[i].Title + '.jpg';
        end;

        Console.WriteLine('Ici ? {0}', [CheminPhoto]);
        InfoImage := ExifFile.Read(CheminPhoto);
        Console.WriteLine('Trouvée ! Je vais voir sa géolocalisation !');
        try
          Latitude := GPSLatitudeLongitude(InfoImage.Properties[ExifLibrary.ExifTag.GPSLatitude]);
          Longitude := GPSLatitudeLongitude(InfoImage.Properties[ExifLibrary.ExifTag.GPSLongitude]);
          ConFlickr.PhotosGeoSetLocation(AlbumFlickr[i].PhotoId, Latitude.ToFloat(), Longitude.ToFloat(), GeoAccuracy.None);
          Console.WriteLine('C''est bon, j''ai mis à jour la géolocalisation de la photo.');
          Console.WriteLine('Localisée ici : {0}  {1}', [Latitude.ToFloat(), Longitude.ToFloat()]);
        except
          Console.WriteLine('J''ai trouvé la photo, mais impossible de savoir où elle a été prise !');
        end;
      except
        Console.WriteLine('Photo introuvable en local !');
      end;

      Console.WriteLine('=====');
    end;
  end;

  Console.WriteLine('J''ai fini !'#13#10'On s''appel ?');

  Console.ReadLine();
end;

end.

Voilà, il vous reste peut-être à adapter le code…

Publicités

~ par ILP sur 25 août 2010.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :