[Résolu] Convertir une URL en image

Convertir une URL en image [Résolu] - Perl - Programmation

Marsh Posté le 30-09-2011 à 03:42:13    

Bonjour,
 
Je vous expose ici mon souci,
Voilà j'ai un script ci-dessous qui fonctionne parfaitement bien.
Il a pour but de m'envoyer un email au format HTML en y incluant une image d'un graph qui pointe vers une URL.
 
Comme c'est une URL, c'est en "temps réel", et donc si je retourne sur mon mail une heure plus tard, et bien mon URL se met à jour.
Ce que je veux c'est une "capture" à un instant T.
Ainsi mon image est figé dans le temps et si je retourne sur mon email une heure plus tard, l'information n'aura pas changé.
 
La solution est donc de convertir mon URL en image.
 
Comment faire?
 
 

Code :
  1. #!/usr/bin/perl -w
  2. use warnings;
  3. use strict;
  4. use MIME::Lite;
  5. use MIME::LITE::HTML;
  6. package Net::SMTP::TLS;
  7. use MIME::Base64;
  8. use Authen::SASL;
  9.  
  10. # set up email
  11. my $To = "toto\@yahoo.fr";
  12. my $From = "Graph <toto\@gmail.com>";
  13. my $Cc = "";
  14. my $Bcc = "";
  15. my $Subject = "[Graph]";
  16. my $Top = "<span style=\"font-size:10pt;font-family:Verdana\"><font color=\"#000080\">Bonjour,<BR><BR>PI,<BR><BR></font></span>";
  17. my $URL = "http://localhost:6569/graph/graph_image.php?local_graph_id=2445&rra_id=0&view_type=tree";
  18. my $Graph = "<BR><img src=\"$URL\"><P>";
  19. my $HTML = "<span style=\"font-size:10pt;font-family:Verdana\"><font color=\"#000080\"><BR><BR>Cordialement.<BR></font></span>";
  20.  
  21. print "\n";
  22.  
  23. # send email
  24. email($To, $From, $Cc, $Bcc, $Subject);
  25.  
  26. # email function
  27. sub email
  28. {
  29.     # get incoming parameters
  30.     my ($To, $From, $Cc, $Bcc, $Subject) = @_;
  31.     # create a new message
  32.     my $msg = MIME::Lite->new(
  33.  From => $From,
  34.  To => $To,
  35.  Cc => $Cc,
  36.  Bcc => $Bcc,
  37.  Subject => $Subject,
  38.  Type => 'multipart/related',
  39.  Data => $Top . $Graph . $HTML
  40.     ) or die "Error creating multipart container: $!\n";
  41.  
  42.     # send the email
  43.     MIME::Lite->send('smtp',
  44.                                     'smtp.numericable.com',
  45.                                     HELLO=>'smtp.numericable.com',
  46.                                     PORT=>'25',
  47.                                     Debug => 0,
  48.                                     Timeout => 60);
  49.     $msg->attr("content-type" => "text/html; charset=iso-8859-1" );
  50.     $msg->send();
  51.     print "***** $Subject *****\n";
  52. }
  53. __END__


Message édité par Sethenssen le 30-09-2011 à 17:27:22
Reply

Marsh Posté le 30-09-2011 à 03:42:13   

Reply

Marsh Posté le 30-09-2011 à 10:36:04    

C'est quoi le format de ton graphe? Une seule image png, ou c'est composite?
Au fait,

my $To = 'toto@yahoo.fr';
my $From = 'Graph <toto@gmail.com>';


Quand il y a rien à interpoler, on utilise les simple quotes, et on n'a pas besoin de \  
A+,


Message édité par gilou le 30-09-2011 à 10:48:01

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 30-09-2011 à 14:05:42    

Ok je ne savais pas pour l'interpolation.
 
Mon graph est un graph http://www.cacti.net/
 
Ce que je peux faire avec mon web browser:
- Enregistrer l'image sous : mais à ce moment là il me propose uniquement le format .php (si je force en .jpg ou .png cela ne fonctionne pas)
- Copier l'URL de l'image (c'est ce que j'utilise déjà dans mon script)
- Copier l'image (ici cela me permet de le c/c dans un mail, c'est ce qui m’intéresse au final)
 
Quand j'essaye de faire un wget sur l'URL cela ne fonctionne pas, il ne me rend pas la main et le fichier téléchargé est un fichier en hexadécimal.

Reply

Marsh Posté le 30-09-2011 à 15:50:38    

Je sais que c'est un graph cacti. Mais au final, un graph cacti que tu reçois, ça contient une image ou plusieurs. Et c'est a priori en gif ou png si j'en crois ceci: http://docs.cacti.net/manual:087:3 [...] h_template
Donc s'il y a qu'une image et au format png, le plus simple est d'utiliser LWP::Simple avec getstore($url, $file) pour la sauvegarder localement et d'attacher au mail cette sauvegarde.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 30-09-2011 à 17:27:00    

Avec getstore($url, $file) ça marche impeccable
 
Merci une nouvelle fois Gilou !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed