Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2010, 21h59   #1
Membre habitué
 
Homme Serge
Inscription : octobre 2004
Messages : 329
Détails du profil
Informations personnelles :
Nom : Homme Serge
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2004
Messages : 329
Points : 122
Points : 122
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 :
<img src="image.php?id=10">
Le script image.php
Code :
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.
senacle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 22h05   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Tu peux le faire avec GD et imagecopyresampled( ).

http://www.php.net/imagecopyresampled
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h50   #3
Membre habitué
 
Homme Serge
Inscription : octobre 2004
Messages : 329
Détails du profil
Informations personnelles :
Nom : Homme Serge
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2004
Messages : 329
Points : 122
Points : 122
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
senacle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 20h57   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
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
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 22h37   #5
Membre habitué
 
Homme Serge
Inscription : octobre 2004
Messages : 329
Détails du profil
Informations personnelles :
Nom : Homme Serge
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2004
Messages : 329
Points : 122
Points : 122
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 :
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);
	}
?>
senacle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h37.


 
 
 
 
Partenaires

Hébergement Web