Alors voici, après mes premiers déboires(*), je pense que j'approche de
qque chose qui pourrait tenir la route.
(en moins de 200 lignes, commentaires, vides et html compris)
Pour essayer c'est ici :
<http://je.m.arrete.free.fr/photos_upload/>
Essayez tt de même de ne pas faire trop fort, Free est qque fois
pointilleux vis à vis de ce qu'on y bricole :-(
Je supprime cet essai ce vendredi ainsi que vos uploads qui seraient passés.
Pour le code c'est là :
<http://je.m.arrete.free.fr/photos_upload/sam_upload.txt>
Merci de bien vouloir vous y pencher et de me faire vos remarques.
J'ai mis un bout de code qui m'est incompréhensible pour allouer la
mémoire soi-disant nécessaire aux opérations de redimensionnements.
(si Free l'autorise ?)
Je n'ai pas contrôlé les fichiers par la méthode exif.
Je n'ai pas utilisé de classe comme Marc le proposait (je n'ai pas bp
regardé son code non plus, préférant tourner ma sauce moi-même, mais je
le ferai bientôt).
À propos, la classe est appelée par require_once m'a t-il semblé.
Faudra que je vois la diff d'avec include.
Voilà.
à ++
(*) post : Verification upload photos par formulai re
--
sm
Tiens, au fait, puisque tu as l'air de t'y connaitre, comment réalise t-on un jpeg qui s'affiche dans un brouteur d'abord dégueu puis qui progressivement s'améliore ? (fabrication en php s'entend)
Excellente question ! Je ne connaissais pas la réponse, mais j'ai trouvé ceci :
<cit. http://fr.php.net/manual/fr/function.imagejpeg.php> Note: Si vous voulez générer des images JPEG progressives, vous devez activer l'entrelacement à l'aide de la fonction imageinterlace(). </cit.> puis :
<cit. http://fr.php.net/manual/fr/function.imageinterlace.php> int imageinterlace ( resource $image [, int $interlace= 0 ] )
Rhalala ! Mais je n'étais pas descendu si bas dans cette page :-(
ça me donnera donc :
J'ai d'abord utilisé pour dupliquer l'image originale : $src = imagecreatefromjpeg($img_orig);
puis redimensions : $tmp = imagecreatetruecolor($tn_width, $tn_height);
donc, maintenant : modif en entrelacé : imageinterlace( $tmp, 1); à moins quil ne fallu le faire avant ? sur l'image d'origine : imageinterlace( $src, 1); lequel des 2 ?
et enfin pour enregistrer : imagejpeg($tmp, $img_dest, 70); (au passage j'essaie de réduire le jpg, mais pas trop)
-- sm
Le 10/9/09 3:32 PM, Olivier Miakinen a écrit :
Le 09/10/2009 11:56, SAM a écrit :
Tiens, au fait, puisque tu as l'air de t'y connaitre, comment réalise
t-on un jpeg qui s'affiche dans un brouteur d'abord dégueu puis qui
progressivement s'améliore ? (fabrication en php s'entend)
Excellente question ! Je ne connaissais pas la réponse, mais j'ai trouvé
ceci :
<cit. http://fr.php.net/manual/fr/function.imagejpeg.php>
Note: Si vous voulez générer des images JPEG progressives, vous devez
activer l'entrelacement à l'aide de la fonction imageinterlace().
</cit.>
puis :
<cit. http://fr.php.net/manual/fr/function.imageinterlace.php>
int imageinterlace ( resource $image [, int $interlace= 0 ] )
Rhalala !
Mais je n'étais pas descendu si bas dans cette page :-(
ça me donnera donc :
J'ai d'abord utilisé pour dupliquer l'image originale :
$src = imagecreatefromjpeg($img_orig);
puis redimensions :
$tmp = imagecreatetruecolor($tn_width, $tn_height);
donc, maintenant : modif en entrelacé :
imageinterlace( $tmp, 1);
à moins quil ne fallu le faire avant ? sur l'image d'origine :
imageinterlace( $src, 1);
lequel des 2 ?
et enfin pour enregistrer :
imagejpeg($tmp, $img_dest, 70);
(au passage j'essaie de réduire le jpg, mais pas trop)
Tiens, au fait, puisque tu as l'air de t'y connaitre, comment réalise t-on un jpeg qui s'affiche dans un brouteur d'abord dégueu puis qui progressivement s'améliore ? (fabrication en php s'entend)
Excellente question ! Je ne connaissais pas la réponse, mais j'ai trouvé ceci :
<cit. http://fr.php.net/manual/fr/function.imagejpeg.php> Note: Si vous voulez générer des images JPEG progressives, vous devez activer l'entrelacement à l'aide de la fonction imageinterlace(). </cit.> puis :
<cit. http://fr.php.net/manual/fr/function.imageinterlace.php> int imageinterlace ( resource $image [, int $interlace= 0 ] )
Rhalala ! Mais je n'étais pas descendu si bas dans cette page :-(
ça me donnera donc :
J'ai d'abord utilisé pour dupliquer l'image originale : $src = imagecreatefromjpeg($img_orig);
puis redimensions : $tmp = imagecreatetruecolor($tn_width, $tn_height);
donc, maintenant : modif en entrelacé : imageinterlace( $tmp, 1); à moins quil ne fallu le faire avant ? sur l'image d'origine : imageinterlace( $src, 1); lequel des 2 ?
et enfin pour enregistrer : imagejpeg($tmp, $img_dest, 70); (au passage j'essaie de réduire le jpg, mais pas trop)
-- sm
Olivier Miakinen
Le 09/10/2009 18:24, SAM a écrit :
Donc je répettationne ma question : comment je fais ça en PHP ? (je vois qu'Olivier y répond à la suite)
Là j'ai utilisé : $src = imagecreatefromjpeg($img_orig); puis redimensions : $tmp = imagecreatetruecolor($tn_width, $tn_height); et enfin pour enregistrer : imagejpeg($tmp, $img_dest, 70); (au passage j'essaie de reduire le jpg)
Remarques : 1) si tu connais déjà $orig_width et $orig_height, inutile de les recalculer ; 2) tu as aussi imagecopyresized() au lieu de imagecopyresampled(), avec exactement les mêmes paramètres dans le même ordre, mais je pense que la qualité est moindre (alors que cela va plus vite) ; 3) j'imagine que tu pourrais intervertir les appels à imagecopyresampled et à imageinterlace sans que cela change quoi que ce soit ; 4) les imagedestroy sont inutiles si ton script s'arrête là, mais ils libèrent la mémoire au cas où tu aurais plusieurs traitements à enchaîner de suite.
<HS>
J'y vois : "thumbnail directory" qu'est-ce que c'est ça une "vignette" de répertoire ?
Non, un répertoire de vignettes (l'anglais met les qualificateurs avant le nom final.
Ha? le s de thumbnail m'aura échappé ?
Moi aussi cela m'a surpris la première fois que j'ai vu ce genre de truc. D'après ce que j'ai compris, lorsque un nom est utilisé comme ça pour qualifier un autre nom il devient un adjectif, et comme tous les adjectifs en anglais il est alors invariable.
</HS>
Le 09/10/2009 18:24, SAM a écrit :
Donc je répettationne ma question : comment je fais ça en PHP ?
(je vois qu'Olivier y répond à la suite)
Là j'ai utilisé :
$src = imagecreatefromjpeg($img_orig);
puis redimensions :
$tmp = imagecreatetruecolor($tn_width, $tn_height);
et enfin pour enregistrer :
imagejpeg($tmp, $img_dest, 70);
(au passage j'essaie de reduire le jpg)
Remarques :
1) si tu connais déjà $orig_width et $orig_height, inutile de les
recalculer ;
2) tu as aussi imagecopyresized() au lieu de imagecopyresampled(), avec
exactement les mêmes paramètres dans le même ordre, mais je pense que
la qualité est moindre (alors que cela va plus vite) ;
3) j'imagine que tu pourrais intervertir les appels à imagecopyresampled
et à imageinterlace sans que cela change quoi que ce soit ;
4) les imagedestroy sont inutiles si ton script s'arrête là, mais ils
libèrent la mémoire au cas où tu aurais plusieurs traitements à
enchaîner de suite.
<HS>
J'y vois : "thumbnail directory"
qu'est-ce que c'est ça une "vignette" de répertoire ?
Non, un répertoire de vignettes (l'anglais met les qualificateurs avant
le nom final.
Ha? le s de thumbnail m'aura échappé ?
Moi aussi cela m'a surpris la première fois que j'ai vu ce genre de
truc. D'après ce que j'ai compris, lorsque un nom est utilisé comme ça
pour qualifier un autre nom il devient un adjectif, et comme tous les
adjectifs en anglais il est alors invariable.
Donc je répettationne ma question : comment je fais ça en PHP ? (je vois qu'Olivier y répond à la suite)
Là j'ai utilisé : $src = imagecreatefromjpeg($img_orig); puis redimensions : $tmp = imagecreatetruecolor($tn_width, $tn_height); et enfin pour enregistrer : imagejpeg($tmp, $img_dest, 70); (au passage j'essaie de reduire le jpg)
Remarques : 1) si tu connais déjà $orig_width et $orig_height, inutile de les recalculer ; 2) tu as aussi imagecopyresized() au lieu de imagecopyresampled(), avec exactement les mêmes paramètres dans le même ordre, mais je pense que la qualité est moindre (alors que cela va plus vite) ; 3) j'imagine que tu pourrais intervertir les appels à imagecopyresampled et à imageinterlace sans que cela change quoi que ce soit ; 4) les imagedestroy sont inutiles si ton script s'arrête là, mais ils libèrent la mémoire au cas où tu aurais plusieurs traitements à enchaîner de suite.
<HS>
J'y vois : "thumbnail directory" qu'est-ce que c'est ça une "vignette" de répertoire ?
Non, un répertoire de vignettes (l'anglais met les qualificateurs avant le nom final.
Ha? le s de thumbnail m'aura échappé ?
Moi aussi cela m'a surpris la première fois que j'ai vu ce genre de truc. D'après ce que j'ai compris, lorsque un nom est utilisé comme ça pour qualifier un autre nom il devient un adjectif, et comme tous les adjectifs en anglais il est alors invariable.