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 :

Redimensionner image avant MySQL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut Redimensionner image avant MySQL
    Bonsoir, (bonne nuit ou bonjour, c'est selon)

    HELP

    Je suis amateur en programmation et bloque sur la manipulation d'images avant stockage dans ma base MySQL... Je n'y parviens décidément pas!

    L'idée (et à mon avis le code) est pourtant simple: l'utilisateur transmets un fichier jpg via un formulaire, PHP la réceptionne, la redimensionne de façon à ce que sa largeur soit de 150px, et stocke l'image sous forme de "BLOB" dans MySQL. J'arrive à redimensionner une image en php, j'arrive à inscruster une image dans MySQL mais n'arrive pas à combiner les deux!

    Il faudrait donc combiner ceci (j'ai extrait la partie qui nous intéresse):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $max = 150; list($largeur, $hauteur) = getimagesize($chemin);
    $image_largeur = $max;
    $image_hauteur = $max*$hauteur/$largeur;
    $image = imagecreatetruecolor($image_largeur, $image_hauteur);
    $source = imagecreatefromjpeg($chemin);
    imagecopyresized($image,$source); //faut-il ajouter des paramètres obligatoirement ici???
    header('Content-type: image/jpeg');
    imagejpeg($image, $chemin_destination, 80);
    imagedestroy($image);
    ?>
    Avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ret = is_uploaded_file($_FILES['photo']['tmp_name']);
    if (!$ret){echo "Problème de transfert"; return false;}
    else{
    	$img_blob = addslashes(file_get_contents($_FILES['photo']['tmp_name']));
    		mysql_query("UPDATE $table SET photo='$img_blob' WHERE ...");
    	}
    J'aimerais, dans la mesure du possible, ne PAS passer par l'enregistrement d'un fichier. Donc faire quelque chose du genre
    $img_blob = imagejpeg($image, $chemin_destination, 80); (mais je sais que ce que j'ai tapé est incorrect "imagejpeg" retournant un booléen)


    J'espère avoir été vaguement compréhensible...
    Un tout grand merci d'avance pour votre aide!

    Vig

  2. #2
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Je ne sais pas si une fonction existe permettant de retourner le binaire de l'image.

    Si tu ne souhaites vraiment pas utiliser de fichier temporaire (qui serai la meilleur solution) tu pourrais utiliser l'output buffering pour stocker dans une variable le contenue de imagejpeg().

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ob_start();
    imagejpeg($gd, false, 80); // Sans chemin de destination donc en sortie standard
    $bin = ob_get_contents();
    ob_end_clean();
     
    // ici tu inserts $bin dans ta BDD
    Je suppose que ça peux marcher

    Veille bien à utiliser la balise [code] à l'avenir

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    Citation Envoyé par vigon Voir le message
    J'aimerais, dans la mesure du possible, ne PAS passer par l'enregistrement d'un fichier.
    Si tu lis un peu les forums, tu verras que pour des raisons d'efficacité il est déconseillé de stocker les images dans la base,
    et qu'il est préférable d'enregistrer le fichier, et de stocker son chemin dans la base

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut
    Je sais cela, mais j'y stocke des images de très petites tailles (moins de 10ko) et ma base fait elle-même moins de 2Mo. Pas de perte significative donc .

    J'opterai finalement p-e bien pour l'enregistrement temporaire puisqu'on me le conseille. Je verrai à l'expérience ce que ça donne. Merci pour vos conseils!

    Sorry pour la balise "code" , j'y ai pensé mais ne savais pas si le BBcode était activé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. redimensionner image avant enregistrement
    Par nacimovitch dans le forum Langage
    Réponses: 3
    Dernier message: 13/06/2013, 17h22
  2. [Images] Redimensionner une image avant upload
    Par Baldy dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/05/2009, 14h07
  3. [Upload] Redimensionner image avant upload
    Par spawns dans le forum Langage
    Réponses: 3
    Dernier message: 08/05/2009, 11h16
  4. Redimensionner image avant de la charger
    Par nou366 dans le forum Delphi
    Réponses: 2
    Dernier message: 11/05/2006, 14h05
  5. [ImageMagick] Redimensionner une image avant de l'enregistrer
    Par julien.63 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/05/2006, 22h01

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