Reduire la taille de plusieurs images d'un formulaire

delfti Messages postés 20 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 11 juin 2011 - 3 janv. 2011 à 13:32
delfti Messages postés 20 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 11 juin 2011 - 6 janv. 2011 à 15:08
Bonjour et bonne année avec plein de codes et de nœuds au cerveau (pour celles et ceux qui en ont un)

Bref, une chtite question simple :
dans mon formulaire de dépôt d'annonce de mon site qui sortira j'espère avant le 21 12 2012
j'ai mis à disposition 4 inputfile pour que les dépositaires puissent mettre 4 photos.

je vais verrouiller le JPG uniquement via javascript mais, ensuite, je veux limiter la taille lors de l'upload afin de ne pas rebuter les annonceurs à le faire eux même.

après deux semaines de recherche, je ne trouve pas de script pour réduire mes jpg.

est ce un traitement qui se fais photo par photo(soit réécrire le script pour chacune d'elle) ou est il possible de faire les 4 en même temps dans un script unique???

merci d'avance pour toutes vos réponses.

10 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2011 à 01:01
bonsoir

il te faut utiliser une class php
redimensionner ...
http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php

a++
0
delfti Messages postés 20 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 11 juin 2011
4 janv. 2011 à 07:18
je te remercie, ça à l'air de correspondre exactement à ce que je recherche.
faudra m'expliquer comment certain trouvent en si peu de temps là où moi j'ai cherché pendant une semaine
merci et G@z
0
delfti Messages postés 20 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 11 juin 2011
4 janv. 2011 à 13:56
je ne dois pas être bien habile ou alors???

bref coté client j'ai mon formulaire qui après validation déclenche mon fichier add.php

ce fichier add.php contient entre autre, la connexion à ma bdd, il recueille les champ tel que nom prenom etc, puis les fichiers photos et là ça donne ça (avec un générateur de code pour le nom afin de ne pas avoir de doublons)
//je m'occupe des photos
function code_generator($taille)
{
if($taille<=0) $taille = 6; 
$consonnes = "bcdfghjklmnpqrstvwxz"; 
$voyelles = "aeiouy"; 
$numeros = "0123456789"; 
$c[0] = $consonnes; 
$c[1] = $voyelles; 
$c[2] = $consonnes; 
$c[3] = $voyelles; 
$c[4] = $numeros; 
$c[5] = $numeros;
$code="";
for ($i=0;$i<$taille;$i++) {
 $code.=substr($c[$i%6],(rand()%(strlen($c[$i%6]))),1); 
} 
return $code;
}
$codex = code_generator(6);




$dest_dossier = 'photosmer/';

if($_FILES['photo1']['name']!="")
{
$fichier1 = $codex.$_FILES['photo1']['name'];	
$dest_fichier1 = basename($fichier1);
move_uploaded_file($_FILES['photo1']['tmp_name'], $dest_dossier . $dest_fichier1);
}
else 
{
$fichier1 = "0.jpg";
}


puis il repart sur la connexion à la table et l'envoi des données et pour finir, affiche un message comme quoi l'annonce est en ligne (je ferai un mail de conf ensuite).

le petit script que tu m'a trouvé, je l'ai posé dans la partie de code ci-dessus et puis rien, il m'affiche des trucs bizarre "���Ӣ}H~��?�VOS�#��X���V����|`�G���h���;Ө������|�����B(��[���I�5kh������(��n�g������Sh��8�=)(��" sur je ne sais combien de ligne et m'envoie la photo dans le dossier sans changer la taille et le poids.
j'ai essayé en changeant quelques variable pour adapter mais rien y fait
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2011 à 16:31
tu veux donc redimensioner à la volée ton image
,c'est à dire lui donner une taille fixe lors de l'upload puis la stocker dans un repertoire et dans ta base stoker le lien qui lui correspond.

tu peux faire ça aprés l'upload la class le permet

essaye voir ça ...
a++

<?php
<?php
//je m'occupe des photos
function code_generator($taille)
{
if($taille<=0) $taille = 6; 
$consonnes = "bcdfghjklmnpqrstvwxz"; 
$voyelles = "aeiouy"; 
$numeros = "0123456789"; 
$c[0] = $consonnes; 
$c[1] = $voyelles; 
$c[2] = $consonnes; 
$c[3] = $voyelles; 
$c[4] = $numeros; 
$c[5] = $numeros;
$code="";
for ($i=0;$i<$taille;$i++) {
 $code.=substr($c[$i%6],(rand()%(strlen($c[$i%6]))),1); 
} 
return $code;
}
$codex = code_generator(6);




$dest_dossier = 'photosmer/';

if($_FILES['photo1']['name']!="")
{
$fichier1 = $codex.$_FILES['photo1']['name'];	
$dest_fichier1 = basename($fichier1);
if(move_uploaded_file($_FILES['photo1']['tmp_name'], $dest_dossier . $dest_fichier1)){
    
    $img=$dest_dossier . $dest_fichier1
    
    /*tu dois avoir SimpleImage.php qui contient ta class
    au même niveau que ton script d'upload    
    */
    
    include('SimpleImage.php');
    $image = new SimpleImage();/*creation de l'objet*/ 
    $image->load($img);
    /*creation miniature*/
    $image->resizeToHeight(90);
    $image->save($dest_dossier.'petit_'.$dest_fichier1);
    /*creation image normale*/
    $image->resizeToHeight(480);
    $image->save($dest_dossier.'grand_'.$dest_fichier1);
    } else {
    die('Prob upload');
    }



}
else 
{
$fichier1 = "0.jpg";
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2011 à 16:34
j'ai oublié ici
$img=$dest_dossier . $dest_fichier1 ;
excuses
sinon parse error
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2011 à 16:47
j'ai essayé comme ça chez moi ça marche parfaitement ... a++

<?php
//je m'occupe des photos
function code_generator($taille)
{
if($taille<=0) $taille = 6; 
$consonnes = "bcdfghjklmnpqrstvwxz"; 
$voyelles = "aeiouy"; 
$numeros = "0123456789"; 
$c[0] = $consonnes; 
$c[1] = $voyelles; 
$c[2] = $consonnes; 
$c[3] = $voyelles; 
$c[4] = $numeros; 
$c[5] = $numeros;
$code="";
for ($i=0;$i<$taille;$i++) {
 $code.=substr($c[$i%6],(rand()%(strlen($c[$i%6]))),1); 
} 
return $code;
}
$codex = code_generator(6);



if(isset($_POST['sub']) && isset($_FILES['photo1'])){	
$dest_dossier = 'photosmer/';

if($_FILES['photo1']['name']!="")
{
$fichier1 = $codex.$_FILES['photo1']['name'];	

    $dest_fichier1 = basename($fichier1);
if(move_uploaded_file($_FILES['photo1']['tmp_name'], $dest_dossier . $dest_fichier1)){
    
    echo $img=$dest_dossier.$dest_fichier1;
    
    /*tu dois avoir SimpleImage.php qui contient ta class
    au même niveau que ton script d'upload    
    */
    
    include('SimpleImage.php');
    $image = new SimpleImage();/*creation de l'objet*/ 
    $image->load($img);
    /*creation miniature*/
    $image->resizeToHeight(90);
    $image->save($dest_dossier.'petit_'.$dest_fichier1);
    /*creation image normale*/
    $image->resizeToHeight(480);
    $image->save($dest_dossier.'grand_'.$dest_fichier1);
    } else {
    die('Prob upload');
    }



}
else 
{
$fichier1 = "0.jpg";
}

}else{
echo $form='<form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">



</form>';
}
?>
0
delfti Messages postés 20 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 11 juin 2011
4 janv. 2011 à 16:51
je teste ce soir et te dis ça vite, si ça peut servir à d'autre.

si j'ai quatre photos, je répète fois l'opération??
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2011 à 20:35
si tu as 4 photos ça marche aussi
soit tu fais une boucle soit repete 4x

if(isset($_POST['sub']) && isset($_FILES['photo1'])){
...
$img1$=dest_dossier.$dest_fichier1;
...


if(isset($_POST['sub']) && isset($_FILES
['photo2'])){ ...
$img2$=dest_dossier.$dest_fichier2;
...

idem
$img3$=dest_dossier.$dest_fichier3;

idem
$img4$=dest_dossier.$dest_fichier4;

remarques :
ton upload est pas sécurisé
tu devrais controler l'extension
, filtrer le nom , tester la taille ...
sinon y a des petits malins
qui vont t'envoyer des co...ies !

ex filtre pour $fichier1
idem pour 2, 3, 4 ...

         
<?php
/*petite secu*/
   
$fichier1 = $codex.$_FILES['photo1']['name'];

      $fichier1  = strtr($fichier1 , 
         'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
         'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier1 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier1 );
?>


a++
0
delfti Messages postés 20 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 11 juin 2011
4 janv. 2011 à 21:33
alors là chapeau bas
ça fonctionne bien,
j'ai juste enlevé le petit form à la fin
la création de miniature (pas nécessaire)
dans le save j'ai enlevé le mot grand_ car sinon il me créait une nouvelle image et gardait l'image au format d'origine en plus
et sinon, j'ai aussi enlevé le echo de $img=$dest... sinon il me l'écrivait dans la page de confirmation de dépot

je vais tester pour quatre photo dans mon formulaires comme ça on pourra boucler la boucle.

merci encore pour cette aide précieuse.
0
delfti Messages postés 20 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 11 juin 2011
6 janv. 2011 à 15:08
pour quatre photos, ça fonctionne, j'ai juste modifié le include(simpleImage) en include_once
voili
0
Rejoignez-nous