Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 02/12/2007, 23h24   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
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 :
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 :
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
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 23h40   #2
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
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 :
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
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 12h47   #3
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
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
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 18h49   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
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é.
vigon 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 07h46.


 
 
 
 
Partenaires

Hébergement Web