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
> 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 :-(
Bon, ben, �a a l'air de marcher...
Je viens d'y poser une photo sans probl�me, par contre, pourquoi y a
deux fois la photo, et pourquoi y'a ce texte dessous : "Erreur #0 = tout
est OK"
--
Alex
Vous avez beau dire, y'a pas seulement que de la pomme, y'a aut'chose.
�a serait pas d�s fois de la betterave, hein ?
Ton bout de code est compr�hensible :) En fait, c'est le calcul du poids
de l'image (nombres de pixels * bits par pixel * nombre de canaux de
l'image) divis� par 8 (pour avoir en octets et non pas en bits).
J'ai une petite interrogation sur le pow(2,16), mais �a doit avoir sa
raison :)
La multiplication par 1.65 doit �tre pour avoir une marge valable.
> Je n'ai pas contr�l� les fichiers par la m�thode exif.
Toutes les images n'ayant pas forc�ment des infos exif (je crois), ce
n'est pas plus mal.
> 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).
Oui, ce serait mieux.
> � propos, la classe est appel�e par require_once m'a t-il sembl�.
> Faudra que je vois la diff d'avec include.
La diff�rence est au niveau des erreurs d'inclusion. Un require produit
une erreur fatale (E_ERROR) alors qu'include provoque une alerte
(E_WARNING).
La seule critique que je te ferais, c'est de ne pas s�parer ton html de
ton php, et surtout de mettre une fonction en plein milieu :)
--
R�seau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communaut� Francophone sur les Eggdrops: http://www.eggdrop.fr
Le test est surtout pour les fichiers qui ne sont pas des images
et surtout ceux qui tenteraient de se faire passer pour une image,
les 2 devant �tre refus�s, de pr�f avant r�el upload.
> deux fois la photo, et pourquoi y'a ce texte dessous : "Erreur #0 = tout
> est OK"
Ben ...
- le gars il envoie sa photo (3200/2400 <2Mo)
- le truc la v�rifie (objet du test et corrig�s)
- le truc la resize en 600/480 et sauve celle-l�
- le truc la resize en 200/150 et sauve celle-l�
- le truc efface l'upload�
- le truc affiche donc la grande vue et sa vignette pour contr�le
(bient�t l'ajout de suppression/remplacement des vues si !ok)
- le truc r�affirme que pas d'erreur tout est OK
Bon, faut pas trop se prendre la t�te avec les affichages textuels,
c'est plut�t pour du d�bogage � l'heure actuelle.
Y a m�me pas de css pour faire joli.
Si on coche la case et valide �a affiche l'ensemble des vignettes
enregistr�es, pas besoin d'uploader qque chose dans ce cas.
Le clic sur une des diapos montr�es affiche (en JavaScript �a m'est +
facile) la grande vue.
Pour l'heure les images sont pas trop moches ;-)
Merci.
Me reste � voir si on peut (facilement ?) transformer un png en jpg.
Les png ou gif avec transparence n'ont aucun int�r�t pour le r�sultat
esp�r�, et il me semble que les jpg fatiguent moins et le serveur et les
brouteurs.
--
sm
Je sais lire une multiplication ;-)
Mais d'o� sort ce calcul ?
Est-ce que �a peut impressionner Free ?
(qu'il alloue + de m�moire si besoin)
Faudrait avoir une grande image de poids <=2Mo � essayer.
Je viens d'essayer avec un jpg de 1,9Mo,
r�sultat :
M�moire utilis�e : 21679522 contre 129816
est-ce � dire que la m�moire de base est de 129816
et que l� �a a demand� (et obtenu) 21679522
?
>> Je n'ai pas contr�l� les fichiers par la m�thode exif.
>
> Toutes les images n'ayant pas forc�ment des infos exif (je crois), ce
> n'est pas plus mal.
C'est un peu mon sentiment aussi.
Faut juste que je sois certain que
getimagesize()
�limine vraiment tout fichier non image.
Et que �a marche sur le fichier temporaire.
Car apr�s les contr�les par redimensionnement se font sur un vrai fichier.
Arggh! je crois avoir oubli� de l'effacer si les redimensionnements
�chouent.
enfin ... si mon truc de r�sultat de ceux-ci tient la route ?!
($ok1 et $ok2)
Par contre, et pour revenir sur les histoires de m�moire,
lors d'1 de mes essais avec un png, Free m'a gueul� � l'arnaque de
m�moire ;-(
Je n'ai pas eu ce pb avec des jpg.
Les png, c'est s�r que c'est plus lourd � bouger, surtout que j'essaie
de les compresser au max au passage.
Je vais peut-�tre supprimer cette option, non?
(GaphicConverteur prend 50% de mon CPU et qques mns � traiter �a, je
suppose qu'un serveur aussi a besoin de ressources, que le temps
d'attente va �tre d�pass�)
Bon! mon jpg de 1,9Mo GC l'a pass� en png de 8Mo ! Super :-(
>> 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).
>
> Oui, ce serait mieux.
C'est mieux une classe ?
Faut que je pense � me renseigner alors.
Une piste ?
> La seule critique que je te ferais, c'est de ne pas s�parer ton html de
> ton php, et surtout de mettre une fonction en plein milieu :)
L� c'est pour avoir tout dans le m�me fichier.
Ben ... �a essaie de suivre un ordre logique.
Et puis, dans le html pourquoi pas ?
C'est bien s�par�, presque tt le php d'un bloc.
Il y a bien assez � scroller dans les 90 lignes de php sans en plus
remonter avant le head.
M�bon, bien s�r �a ne va pas rester comme �a, c'est pour le test et les
corrig�s de fonctions de contr�les et sauvegarde.
Merci d'�tre pass�.
--
sm
C'est le calcul "normal", qui est tr�s bien expliqu� sur
<http://www.galerie-photo.com/resolution.html>
> Est-ce que �a peut impressionner Free ?
Il est possible que free l'autorise dans une certaine mesure, il faut
faire des tests.
> Faut juste que je sois certain que
> getimagesize()
> �limine vraiment tout fichier non image.
> Et que �a marche sur le fichier temporaire.
getimagesize() fonctionne aussi avec les swf. Il n'y a normalement aucun
souci pour travailler sur les fichiers temporaires.
>>> 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).
>> Oui, ce serait mieux.
> C'est mieux une classe ?
> Faut que je pense � me renseigner alors.
> Une piste ?
J'avais commenc� � en coder une, mais il faudrait que je l'ach�ve enfin :)
Tu peux peut-�tre regarder du c�t� de
<http://mambo-developer.org/api/nav.html?mambots/editors/mostlyce/jscripts/tiny_mce/imagemanager/Classes/ImageManager.php.html>
pour t'inspirer.
>> La seule critique que je te ferais, c'est de ne pas s�parer ton html
>> de ton php, et surtout de mettre une fonction en plein milieu :)
> L� c'est pour avoir tout dans le m�me fichier.
> Ben ... �a essaie de suivre un ordre logique.
> Et puis, dans le html pourquoi pas ?
> C'est bien s�par�, presque tt le php d'un bloc.
Oui, c'est effectivement facile � suivre, pour le test de fonctionnement :)
> SAM wrote:
>>>> 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).
>>> Oui, ce serait mieux.
>> C'est mieux une classe ?
>> Faut que je pense à me renseigner alors.
>> Une piste ?
>
> J'avais commencé à en coder une, mais il faudrait que je l'achève enfin :)
Je peux te passer ma classe si tu veux, elle est un peu commentée mais
peut-être pas assez, elle n'était pas prévue pour "diffusion", mais ça
pourrait te fournir une base de départ. Si ça t'intéresse écris-moi en
privé que je t'envoie le fichier. Bien entendu j'essayerai de bien
t'expliquer comment l'utiliser, elle fait partie d'une sorte de "framework"
maiso, donc il faudra ajuster un ou deux trucs, mais elle devrait
fonctionner avec peu de règlages.
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)
L� les jpeg upload�s lourds (150 � 250ko) s'affichent chez moi en baiss�
de rideau.
>> C'est mieux une classe ?
>> Faut que je pense � me renseigner alors.
>> Une piste ?
>
> J'avais commenc� � en coder une, mais il faudrait que je l'ach�ve enfin :)
>
> Tu peux peut-�tre regarder du c�t� de
> <http://mambo-developer.org/api/nav.html?mambots/editors/mostlyce/jscripts/tiny_mce/imagemanager/Classes/ImageManager.php.html>
Boudiou!
Tu m'envoies direct sur du super ardu sans aucun m�nagement
l� dis donc!
D�j� l'autre m'a creuv� avec ses pixels m�tamorphos�s en DPI
alors ici ... y� souis perdousse de perdosso. keskilmveulent?
J'y vois : "thumbnail directory"
qu'est-ce que c'est �a une "vignette" de r�pertoire ?
> pour t'inspirer.
Heu ...
Une classe c'est une esp�ce de bibli ?
Je me demande si �a me plait : on a d�j� cinquante douze mille fonctions
en php, s'il faut en rajouter issues d'une bibli...
Le serveur te me la met en cache pour, sans nouvel appel, resservir sur
chaque page vue ?
>> C'est bien s�par�, presque tt le php d'un bloc.
>
> Oui, c'est effectivement facile � suivre, pour le test de fonctionnement :)
Oui, bon, ben, j'avais demand� des correctifs ;-)
C'est trop bateau pour �tre remani� ?
Mieux vaut-il tout mettre dans une fonction externe ?
(en attendant que je comprenne ce qu'est une classe)
Rappel : je ne comprends rien au PHP (des fois que �a aurait �chapp�)
M�me que je suis tr�s fier d'avoir am�lior� l'affichage des vignettes en
passant par un album automatique et ses grandes vues tout en php (au
lieu du JS vite fait), pourtant �a ne p�te vraiment pas haut.
Nota: normalement mon truc pour test n'est plus l�.
(le fichier txt est rest�)
Encore merci � ceux qui sont pass�s.
--
sm
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 ] )
imageinterlace() active ou dᅵsactive le bit d'entrelacement.
Si l'entrelacement est ᅵ 1 et l'image est JPEG, l'image crᅵᅵe sera un
JPEG progressif.
</cit.>
> Lᅵ les jpeg uploadᅵs lourds (150 ᅵ 250ko) s'affichent chez moi en baissᅵ
> de rideau.
Je ne sais pas si c'est vrai, mais ceci est allᅵchant :
<http://www.buvetteetudiants.com/cours/administrator/html-css/jpeg-jpg-jpe-jfif.php#jpeg-progressif>
A l'inverse du GIF et PNG, un JPEG progressif est plus lᅵger qu'un JPEG
standard.
</>
Cordialement,
--
Olivier Miakinen
> 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.
--
Greetings, Salutations,
Guiraud Belissen, Ch�teau du Ciel, Drachenwald,
Chris CII, Rennes, France
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)
>> 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� ?
--
sm
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
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>