IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

problème de redimensionnement d'image sur site en ligne


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    développeur/intégrateur web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : développeur/intégrateur web

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut problème de redimensionnement d'image sur site en ligne
    bonjour,

    je me permet de vous envoyer ce message car je suis en train de migrer mon portfolio chez OVH.

    j'ai récupérer sur un tuto un script de redimensionnement d'image. celui-ci fonctionne parfaitement en locale mais dès qu'il est en ligne j'ai l'erreur suivante :

    Warning: imagejpeg() [function.imagejpeg]: Unable to open 'home/stardeuc/dewy/www/img/works/96_150x150.jpg' for writing: No such file or directory in /home/stardeuc/dewy/www/lib/image.php on line 69

    je précise que j'obtiens cet erreur également pour le format png. je n'arrive pas à comprendre pourquoi ce bug apparait lorsque le site est en ligne. en locale tout fonctionnait bien pourtant!!

    je vous mets ci dessous le script trouvé sur le net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    <?php
        function resizedname($file,$width,$height){
            $info = pathinfo($file);
            $return = '';
     
            if($info['dirname'] != '.'){
                $return .= $info['dirname'] . '/';
            }
     
            $return .= $info['filename'] . "_$width" . "x$height." . $info['extension'];
            return $return;
        }
     
        function resizeImage($file, $width, $height, $quality = 100){
            # We define the image dir include Theme support
            //$imageDir = (!isset($this->theme)) ? IMAGES : APP.'View'.DS.'Themed'.DS.$this->theme.DS.'webroot'.DS.'img'.DS;
            # We find the right file
            $pathinfo   = pathinfo(trim($file, '/'));
            //$file       = $imageDir . trim($file, '/');
            $output     = $pathinfo['dirname'] . '/' . $pathinfo['filename'] . '_' . $width . 'x' . $height . '.' . $pathinfo['extension'];
     
                # Setting defaults and meta
                $info                         = getimagesize($file);
                list($width_old, $height_old) = $info;
                # Create image ressource
                switch ( $info[2] ) {
                    case IMAGETYPE_GIF:   $image = imagecreatefromgif($file);   break;
                    case IMAGETYPE_JPEG:  $image = imagecreatefromjpeg($file);  break;
                    case IMAGETYPE_PNG:   $image = imagecreatefrompng($file);   break;
                    default: return false;
                }
                # We find the right ratio to resize the image before cropping
                $heightRatio = $height_old / $height;
                $widthRatio  = $width_old /  $width;
                $optimalRatio = $widthRatio;
                if ($heightRatio < $widthRatio) {
                    $optimalRatio = $heightRatio;
                }
                $height_crop = ($height_old / $optimalRatio);
                $width_crop  = ($width_old  / $optimalRatio);
                # The two image ressources needed (image resized with the good aspect ratio, and the one with the exact good dimensions)
                $image_crop = imagecreatetruecolor( $width_crop, $height_crop );
                $image_resized = imagecreatetruecolor($width, $height);
                # This is the resizing/resampling/transparency-preserving magic
                if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {
                    $transparency = imagecolortransparent($image);
                    if ($transparency >= 0) {
                        $transparent_color  = imagecolorsforindex($image, $trnprt_indx);
                        $transparency       = imagecolorallocate($image_crop, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
                        imagefill($image_crop, 0, 0, $transparency);
                        imagecolortransparent($image_crop, $transparency);
                        imagefill($image_resized, 0, 0, $transparency);
                        imagecolortransparent($image_resized, $transparency);
                    }elseif ($info[2] == IMAGETYPE_PNG) {
                        imagealphablending($image_crop, false);
                        imagealphablending($image_resized, false);
                        $color = imagecolorallocatealpha($image_crop, 0, 0, 0, 127);
                        imagefill($image_crop, 0, 0, $color);
                        imagesavealpha($image_crop, true);
                        imagefill($image_resized, 0, 0, $color);
                        imagesavealpha($image_resized, true);
                    }
                }
                imagecopyresampled($image_crop, $image, 0, 0, 0, 0, $width_crop, $height_crop, $width_old, $height_old);
                imagecopyresampled($image_resized, $image_crop, 0, 0, ($width_crop - $width) / 2, ($height_crop - $height) / 2, $width, $height, $width, $height);
                # Writing image according to type to the output destination and image quality
                switch ( $info[2] ) {
                  case IMAGETYPE_GIF:   imagegif($image_resized, $output, 80);    break;
                  case IMAGETYPE_JPEG:  imagejpeg($image_resized, $output, 80);   break;
                  case IMAGETYPE_PNG:   imagepng($image_resized, $output, 9);    break;
                  default: return false;
                }
     
            return true;  
     
        }
    pour le redimensionnement des avatars des comptes administrateurs, voici le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    move_uploaded_file($_FILES['avatar']['tmp_name'], IMAGES . '/avatar/' . $avatar_name);
    					resizeImage(IMAGES . '/avatar/' . $avatar_name, 32,32);
    IMAGES est une constante calculée en PHP voici le code si vous voulez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    define('IMAGES',WWW_ROOT . DIRECTORY_SEPARATOR . 'img');
    j'ai bien vu qu'il existe un code source PHP pour redimensionner les images sur ce forum, mais je voudrais pourquoi cette librairie ne fonctionne en ligne

    merci d'avance pour vos lumières

    doogie1

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    d'ou vient le "works" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    développeur/intégrateur web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : développeur/intégrateur web

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par sabotage Voir le message
    d'ou vient le "works" ?
    Bonjour sabotage. Je ne vois pas le works dans le script. Mais j'ai effectivement utiliser works pour la structure de l'application. Works correspond à mes travaux que je veux mettre en avant.

    Tu peux m'en dire plus sur ta réflexion ?

    A plus

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans l'erreur on voit un dossier "works" mais ce dossier n'est pas présent dans le code que tu nous montres.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Homme Profil pro
    développeur/intégrateur web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : développeur/intégrateur web

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    en fait le dossier works est un sous dossier de img dans lequel je stocke les images de mes différents travaux web. en fait pour ce problème j'avais vu sur le web que ça pouvais provenir des droits d'écriture des fichiers. or j'ai mis les droits d'écriture de img et de ses sous dossiers à 777. pareil pour le fichier image.php qui génère le script.

    bizarre tout ça!!

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'insiste pour comprendre mais d'ou vient "works" puisqu'il n'est pas défini dans ta constante IMAGES ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Candidat au Club
    Homme Profil pro
    développeur/intégrateur web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : développeur/intégrateur web

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    ah oui je comprends mieux la question. voici l'arborescence de cette appli :

    img
    works
    avatar

    works est un sous-dossier de img ou je range tous les images de mes réalisations et avatar correspond à la miniature des admins.

    le chemin est calculé de la sorte :

    pour l'avatar
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(isset($_GET['id']))
    				{
     
    					move_uploaded_file($_FILES['avatar']['tmp_name'], IMAGES . '/avatar/' . $avatar_name);
    					resizeImage(IMAGES . '/avatar/' . $avatar_name, 32,32);
     
    					$db->query("UPDATE users SET avatar = $avat WHERE id=$id");
    					setFlash('modification sauvegardée');
    					header('Location:administrator.php');
    					die();
     
    				}
    pour mes images correspondant à mes réalisations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	if(in_array($extension, array('jpg','png'))){
    				$db->query("INSERT INTO images SET work_id=$work_id");
    				$image_id = $db -> lastInsertId();
    				$image_name = $image_id . '.' . $extension;
    				move_uploaded_file($image['tmp_name'], IMAGES . '/works/' . $image_name);
     
    				resizeImage(IMAGES . '/works/' . $image_name, 150,150);
     
    				$image_name = $db->quote($image_name);
    				$db->query("UPDATE images SET name = $image_name WHERE id = $image_id");
    			}
    voilà j'espère qu'avec ces bouts de code on pourra trouver une solution. si tu veux d'autres précisions n'hésite à me le dire

    merci d'avance pour ton aide

  8. #8
    Candidat au Club
    Homme Profil pro
    développeur/intégrateur web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : développeur/intégrateur web

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    bon apparemment ça à l'air d'être assez compliqué, je n'arrive pas du tout à trouver mon erreur...je vais tenter un autre script de redimensionnement, c'est peut être plus simple

    si quelqu'un à une soluce n'hésitez pas

Discussions similaires

  1. Problème de visu d'images sur site hébergé
    Par dandav55 dans le forum Mon site
    Réponses: 0
    Dernier message: 28/10/2007, 17h17
  2. [Tableaux] Redimensionner des images sur un site
    Par Ubum dans le forum Langage
    Réponses: 9
    Dernier message: 24/08/2007, 17h21
  3. [BufferedImage] Redimensionner / Sauvegarder image sur disque
    Par nicolas.pied dans le forum Multimédia
    Réponses: 1
    Dernier message: 17/04/2007, 02h54
  4. Réponses: 1
    Dernier message: 11/04/2007, 09h03
  5. [Tableaux] Problème d'ajout d'images sur une page
    Par linkman dans le forum Langage
    Réponses: 2
    Dernier message: 29/07/2006, 21h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo