Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[pour test et correction] Upload images

12 réponses
Avatar
SAM
Salutatous,

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

2 réponses

1 2
Avatar
SAM
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)


--
sm
Avatar
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)



Je parierais pour :

list($orig_width, $orig_height) = getimagesize($img_orig);
$src = imagecreatefromjpeg($img_orig);
$tmp = imagecreatetruecolor($tn_width, $tn_height);
imagecopyresampled($tmp, $src, 0, 0, 0, 0,
$tn_width, $tn_height, $orig_width, $orig_height);
imageinterlace($tmp, 1);
imagejpeg($tmp, $img_dest, 70);
imagedestroy($src);
imagedestroy($tmp);

(Non testé)


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>
1 2