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

PHP & Base de données Discussion :

Redimensionner une image blob


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut Redimensionner une image blob
    Bonjour,

    J'ai des images stockées en base sous forme de blob.
    J'arrive à les afficher dans une page html avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="image.php?id=10">
    Le script image.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $image = "SELECT photo FROM plante WHERE id_plante = ".$_GET['id']." ORDER BY plante";
    $query_image = mysql_query($image);
    $row_image = mysql_fetch_array($query_image);
    $image = $row_image['photo'];
    echo $image;

    Mais je voudrais les redimensionner avant de les afficher.

    Comment faire.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Tu peux le faire avec GD et imagecopyresampled( ).

    http://www.php.net/imagecopyresampled

  3. #3
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut
    Certes, mais dans tous les cas, il faut récupérer la taille d'origine.

    Et comme mon image est un blob, getimagesize($image) renvoie l'erreur :

    failed to open stream: No such file or directory

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par senacle Voir le message
    Certes, mais dans tous les cas, il faut récupérer la taille d'origine.

    Et comme mon image est un blob, getimagesize($image) renvoie l'erreur :

    failed to open stream: No such file or directory
    Comment traiter une image dont on ne dispose que du contenu binaire ?

    Il faut tout d'abord la charger avec imagecreatefromstring( ).

    http://fr.php.net/manual/en/function...fromstring.php

  5. #5
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut
    C'est bien ce que j'ai essayé de faire hier, mais j'avais aussi des erreurs....


    Bon, en cherchant un peu, j'ai trouvé ceci : http://www.ozzu.com/programming-foru...ob-t77626.html

    Voici donc mon code final, qui permet de redimensionner les images en gardant les proportions et seulement si la taille d'origine dépasse la taille cible (sur la largeur, la hauteur ou les deux).

    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
     
    <?php
    	function redim_image($largeur_origine, $hauteur_origine, $largeur_cible, $hauteur_cible) {
    		$test_h = round(($largeur_cible / $largeur_origine) * $hauteur_origine);
    		$test_w = round(($hauteur_cible / $hauteur_origine) * $largeur_origine);
    		if(!$hauteur_cible) {
    			$hauteur_cible = $test_h;
    		} else if (!$largeur_cible) {
    			$largeur_cible = $test_w;
    		} else if ($test_h > $hauteur_cible) {
    			$largeur_cible = $test_w;
    		} else {
    			$hauteur_cible = $test_h;
    		}
    		return array($largeur_cible, $hauteur_cible);
    	}
     
    	$bdd = "Plante";
    	$msgerrors = "";
    	if (!$conn = mysql_connect ("localhost", "root", "azse72n@76bn")) {
    		$msgerrors = mysql_errno($conn) . ": " . mysql_error($conn);
    	} else if (!mysql_select_db ($bdd)) {
    		$msgerrors = mysql_errno($conn) . ": " . mysql_error($conn);
    	}
    	if ($msgerrors != "") {
    		echo $msgerrors;
    	} else {
    		$image = "SELECT photo FROM plante WHERE id_plante = ".$_GET['id'];
    		$query_image = mysql_query($image);
    		$row_image = mysql_fetch_array($query_image);
    		$largeur_cible = 400;
    		$hauteur_cible = 400;
    		$image_origine = imagecreatefromstring($row_image['photo']);
    		$largeur_origine = imagesx($image_origine);
    		$hauteur_origine = imagesy($image_origine);
    		if ($largeur_origine > $largeur_cible || $hauteur_origine > $hauteur_cible) {
    			list($largeur_cible, $hauteur_cible) = redim_image($largeur_origine, $hauteur_origine, $largeur_cible, $hauteur_cible);
    			$image_cible = imagecreatetruecolor($largeur_cible, $hauteur_cible);
    			imagecopyresampled($image_cible, $image_origine, 0, 0, 0, 0, $largeur_cible, $hauteur_cible, $largeur_origine, $hauteur_origine);
    		} else {
    			$image_cible = $image_origine;
    		}
    		header('Content-type: image/jpeg');
    		imagejpeg($image_cible, null, 100);
    		imagedestroy($image_origine);
    		imagedestroy($image_cible);
    	}
    ?>

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

Discussions similaires

  1. [VB.NET] Redimensionner une image dans un PictureBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/04/2007, 18h24
  2. Redimensionner une image...
    Par RhaZieL dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 22/07/2005, 09h30
  3. [.NET][CR] Comment afficher une image blob dans un état ?
    Par moucrack dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/06/2005, 13h49
  4. [VB.NET] Redimensionner une image proportionnelement
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/10/2004, 12h10
  5. [MX2004] redimensionner une image lors du chargement
    Par ouinouin dans le forum Flash
    Réponses: 8
    Dernier message: 18/02/2004, 18h32

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