IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

utilisation de l'attribut attr_imgsize dU MODULE Image


Sujet :

Modules Perl

  1. #1
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut utilisation de l'attribut attr_imgsize dU MODULE Image
    Bonjour

    j'ai installé le module Image-Size et je voudrais obtenir la taille de mon image que je upload sans que je n'ai à créer un fichier dans l'immediat ..

    j'ai commencé par un test pour vérifier que le module est bien installé voici le premier bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    use Image::Size;
     
    my $photo1 = param ("photo1");
     
    my ($x , $y , $id) = imgsize($photo1);
    print "Content-type: text/html\n\n";
    print $x ;
    j'obtiens la taille de l'image uploadé je l'ai vérifié pas de souci

    maintenant je voudrais connaitre sa taille en Ko ou Mo bref je voulais utiliser le'attribut attr_imgsize

    j'ai trouvé un exemple qui l'exploitait de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    @attrs = attr_imgsize("image.gif");
    j'ai donc fait la même chose mais j'ai une erreur de compilation ...

    je voudrais savoir si il est necessaire que le fichier existe sur le serveur ou s'agit-il d'une erreur de code ?

    Merci
    c@simir

  2. #2
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    ahh bon j'ai trouvé mon erreur j'avais mal écris la délcaration

    avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    use Image::Size (attr_imgsize);
    aprés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    use Image::Size qw(attr_imgsize);
    par contre cela me donne les dimensions (hauteur, largeur) moi je voudrais la taille en octet ...

    Merci
    c@simir

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Salut

    Avec la FAQ, tu aurais vu la commande stat (la même que sous Unix) qui te donne la taille d'un fichier en octets.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: utilisation de l'attribut attr_imgsize dU MODULE Image
    Dans le premier post :
    Citation Envoyé par vbcasimir
    j'obtiens la taille de l'image uploadé je l'ai vérifié pas de souci
    Dans le second post :
    Citation Envoyé par vbcasimir
    par contre cela me donne les dimensions (hauteur, largeur) moi je voudrais la taille en octet ...
    Quelle taille obtiens-tu (celle que tu as vérfié) ? Dès le premier post, ce sont déjà des dimensions ?

    Quelle taille veux-tu ?
    - La taille du fichier ?
    - La taille "mémoire" du tampon vidéo correspondant (i.e. le produit des dimensions spatiales par la dimension chromatique) ?
    - Autre chose ?

    As-tu essayé en regardant la longueur de ton scalaire (fonction length) ?
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    Quand je parle de taille j'entends le nombre d'octet que représente l'image et non ses dimensions que j'ai obtenu avec la fonction image_size ...

    pour repondre à GLDavid je dois préciser que je upload l'image et que je traite les données de cette image à partir d'une variable je ne crée pas de fichier physique sur le serveur donc je ne peux utiliser de commande linux ..
    c@simir

  6. #6
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par vbcasimir
    pour repondre à GLDavid je dois préciser que je upload l'image et que je traite les données de cette image à partir d'une variable je ne crée pas de fichier physique sur le serveur donc je ne peux utiliser de commande linux ..
    Donc, un length ($image) , comme je l'ai dit à la fin de mon autre post, ça peut avoir du sens
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  7. #7
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    en utilisant on calcule la longueur du nom du fichier de l'image que je upload ...
    Ce n'est pas ce que je veux je voudrais obtenir sa taille en octet ... et non pas ses dimensions (hauteur, largeur)
    c@simir

  8. #8
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    j'ai aussi fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     
    my $taille = <$images>;
     
    print length($taille);
    mais j'obtiens pas la taille de mon fichier la valeur obtenue n'est pas la même ...
    c@simir

  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Et en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $taille;
    { local $/; $taille = <$images>; }
    print length($taille);
    (tu ouvres bien ton fichier en mode binaire ?)
    --
    Jedaï

  10. #10
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    bien avec ce code je retrouve la taille de mon image ...

    je voudrais comprendre ce que ça fait d'ajouter local $/ et pourquoi entre accolade ? qu'est ce que ça traduit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    my $taille;
    { local $/; $taille = <$images>; }
    print length($taille);
    Merci[/b]
    c@simir

  11. #11
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    En fait quand tu utilises <> en contexte scalaire, tu lis le fichier de ta position courante à la première occurrence du délimiteur $/ ( $INPUT_RECORD_SEPARATOR avec le module "English", ou $RS). Par défaut, $/ est positionné à "\n" ce qui permet de lire ligne à ligne. Mais évidemment dans un fichier binaire ce comportement est inutile et mauvais... Dans ton cas particulier, ton problème est de lire l'ensemble du fichier, une implémentation naïve serait :
    NE FAITES PAS CA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my @content = <FILE>;
    my $content = join '', @content;
    $content contient tout le fichier après cela, mais tu as demandé à Perl de découper le fichier, puis tu as jeté tout son boulot pour récupérer les données brutes, or ni le découpage du fichier (surtout) ni le join() ne sont gratuits : c'est du gaspillage !!
    $/ a quelques valeurs "particulières" qui affecte le comportement de <> plus radicalement que juste un changement de caractère délimiteur, tu peux en trouver la liste dans la doc, ici ce qui nous intéresse, c'est la valeur "undef" qui désactive tout simplement le découpage du fichier (on dit qu'on slurp le fichier).
    "local $var = machin;" est une déclaration qui donne à $var (une variable globale) une valeur particulière pour la durée d'un bloc puis restaure sa valeur initiale.
    local $var est équivalent à local $var = undef.
    Cet idiôme restreint donc les effets de bord tout en garantissant une lecture rapide de l'intégralité du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $content;
    { local $/; $content = <FILE>; }
    (pour être encore plus rapide, dans l'ordre on peut utiliser read() ou sysread(), mais leur mise en place est plus complexe et le gain faible si on ne lit pas des centaines de gros fichiers à la suite)

    --
    Jedaï

  12. #12
    Membre habitué Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Points : 168
    Points
    168
    Par défaut
    merci pour ces explications qui me permette de mieux comprendre ...

    Merci beaucoup
    c@simir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2007, 14h59
  2. utilisation de l'attribut SET dans une selection
    Par stecale dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/11/2006, 16h12
  3. [MySQL] Comment utiliser le chemin d'accès d'une image ?
    Par mealtone dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 18/08/2006, 11h29
  4. [GD] Probleme d'utilisation de la bibliotheque GD pour creation image
    Par SL_Fredouille dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/06/2006, 00h06
  5. Utilisation du module Imager
    Par Pico10 dans le forum Modules
    Réponses: 1
    Dernier message: 19/04/2006, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo