OVH Cloud OVH Cloud

Comment lire la taille d'une image dans ces conditions ?

8 réponses
Avatar
BlinKol
Comment obtenir la largeur et hauteur d'un fichier image (GIF ou JPEG),
sachant que mon hébergeur a juste le stock de modules par défaut de Perl
5.00503 (c.a.d. sans choses comme Image::Info ou Image::Size) et ne
permet pas l'installation de nouveau module en dehors de mon répertoire
cgi-bin ?

Et, bien sûr, je ne souhaite pas changer d'hébergeur simplement pour ça.

8 réponses

Avatar
kurtz_le_pirate
"BlinKol" a écrit dans le message de news:

Comment obtenir la largeur et hauteur d'un fichier image (GIF ou
JPEG),
sachant que mon hébergeur a juste le stock de modules par défaut de
Perl
5.00503 (c.a.d. sans choses comme Image::Info ou Image::Size) et ne
permet pas l'installation de nouveau module en dehors de mon
répertoire
cgi-bin ?

Et, bien sûr, je ne souhaite pas changer d'hébergeur simplement pour
ça.


heu... ben simple ça :
use Image::Size;
($image_x, $image_y) = imgsize("lefichier.gif");

il y a un piège dans la question ?

Avatar
DoMinix
kurtz_le_pirate wrote:
"BlinKol" a écrit dans le message de news:
...

use Image::Size;
...

il y a un piège dans la question ?



oui et tu vient de marcher dedans et tu en as plein les bottes.

--
dominix

Avatar
DoMinix
BlinKol wrote:
Comment obtenir la largeur et hauteur d'un fichier image (GIF ou JPEG),
sachant que mon hébergeur a juste le stock de modules par défaut de Perl
5.00503 (c.a.d. sans choses comme Image::Info ou Image::Size) et ne
permet pas l'installation de nouveau module en dehors de mon répertoire
cgi-bin ?

Et, bien sûr, je ne souhaite pas changer d'hébergeur simplement pour ça.


tu peux lire le fichier en binaire directement et interpreter les bits
14-15 pour la largeur
16-17 pour la heuteur

ca donne qq chose comme
open(FH, "< :raw", $filename);
seek(FH, 13, 0) or die "seek:$!";
read(FH, $largeur, 2);
read(FH, $hauteur, 2);

--
dominix

Avatar
DoMinix
DoMinix wrote:
BlinKol wrote:

Comment obtenir la largeur et hauteur d'un fichier image (GIF ou JPEG),
sachant que mon hébergeur a juste le stock de modules par défaut de Perl
5.00503 (c.a.d. sans choses comme Image::Info ou Image::Size) et ne
permet pas l'installation de nouveau module en dehors de mon répertoire
cgi-bin ?

Et, bien sûr, je ne souhaite pas changer d'hébergeur simplement pour ça.



tu peux lire le fichier en binaire directement et interpreter les bits
14-15 pour la largeur
16-17 pour la heuteur

ca donne qq chose comme
open(FH, "< :raw", $filename);
seek(FH, 13, 0) or die "seek:$!";
read(FH, $largeur, 2);
read(FH, $hauteur, 2);



et certainement que $hauteur et $largeur auront besoin d'un coup
de unpack.
--
dominix


Avatar
Nicolas George
DoMinix wrote in message <43bb9679$0$30424$:
tu peux lire le fichier en binaire directement et interpreter les bits
^^^^


Octets. Ou éventuellement bytes à l'anglaise, mais c'est déconseillé.

Avatar
BlinKol
In article <43bb9679$0$30424$,
says...
tu peux lire le fichier en binaire directement et interpreter les bits
14-15 pour la largeur
16-17 pour la heuteur




Hum, merci, mais est-ce que ça marche aussi bien pour JPEG que GIF. Il
me semblait que le cas JPEG était plus complexe que ça.

Avatar
jl_morel
Dans l'article , a dit...

Comment obtenir la largeur et hauteur d'un fichier image (GIF ou JPEG),
sachant que mon hébergeur a juste le stock de modules par défaut de Perl
5.00503 (c.a.d. sans choses comme Image::Info ou Image::Size) et ne
permet pas l'installation de nouveau module en dehors de mon répertoire
cgi-bin ?



Pouvez-vous créer des répertoires dans cgi-bin ?

Si oui, vous pouvez recopier l'arborescence de Image::Size dedans car c'est
un module écrit en Perl pur.
* Vous créez 'cgi-bin/Image' et vous mettez dedans 'Size.pm'
* Vous créez 'cgi-bin/auto/Image/Size' et vous mettez dedans le fichier
index 'autosplit.ix' et tous les fichiers autoload '*.al'.

Si vous faites 'use Image::Size;' dans votre script, celui-ci doit trouver
le module car le premier répertoire de @INC est '.'.

HTH

--
J-L.M.
http://www.bribes.org/perl

Avatar
BlinKol
In article <43be980b$0$31141$,
says...
Dans l'article , a dit...

Comment obtenir la largeur et hauteur d'un fichier image (GIF ou JPEG),
sachant que mon hébergeur a juste le stock de modules par défaut de Perl
5.00503 (c.a.d. sans choses comme Image::Info ou Image::Size) et ne
permet pas l'installation de nouveau module en dehors de mon répertoire
cgi-bin ?



Pouvez-vous créer des répertoires dans cgi-bin ?

Si oui, vous pouvez recopier l'arborescence de Image::Size dedans car c'est
un module écrit en Perl pur.
* Vous créez 'cgi-bin/Image' et vous mettez dedans 'Size.pm'
* Vous créez 'cgi-bin/auto/Image/Size' et vous mettez dedans le fichier
index 'autosplit.ix' et tous les fichiers autoload '*.al'.

Si vous faites 'use Image::Size;' dans votre script, celui-ci doit trouver
le module car le premier répertoire de @INC est '.'.

HTH




Merci pour l'astuce. Je vais aussi aller lire 'perldoc -q "own module"'.
Et, en dehors de ça, il me semble avoir trouvé une fct (enfin, un sub
selon le vocabulaire perl) qui traite le cas JPEG correctement (le cas
GIF, je savais déjà le faire et c'est assez simple). Je vais tester les
trois méthodes