PHP conversion image avant de l'inserer dans la base de donnée
Résolu
lerod83
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
bg62 Messages postés 23733 Date d'inscription Statut Modérateur Dernière intervention -
bg62 Messages postés 23733 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
A l'aide s'il vous plait!
Je veux, lors de l'envoie d'un formulaire, convertir les images uploader par l'utilisateur.
Ce que j'ai en ce moment :
1- Un script formulaire
2- Script PHP pour récupération des $_POST et $_FILES pour insérer dans une base de donnée.
3- Fonction de conversion GD PHP
Ce que je voudrais faire :
- Convertir l'image avant de les sauvegarder dans un dossier spécifique avec lequel la base de donnée se relie.
- Cette conversion concerne la taille et la qualité comme je vais vou le montrer sur les script ci-dessous.
- Comment introduire cette fonction converImage dans l'Extract $_POST ?
- Si vous avez aussi l'idée de l'appliquer sur le format GIF et PNG. Je n'ai pas encore essayé mais si vous voulez l'aborder ce sera mieux !
FONCTION convertImage
convertImage('original/img212.jpg', 'final/img212.jpg', '640', '480', '100');
//original est le dossier qui content l'image source
//final c'est pour la destination de l'image redimensionnée
function convertImage($sources, $dest, $width, $height, $quality){
$imageSize = getimagesize($sources);
$imageRessource = imagecreatefromjpeg($sources);
$imageFinal = imagecreatetruecolor($width,$height);
$final = imagecopyresampled($imageFinal, $imageRessource, 0, 0, 0, 0, $width, $height, $imageSize[0], $imageSize[1]);
imagejpeg($imageFinal, $dest, $quality);
}
SCRIPT FORMULAIRE
<div class = 'saryTambatra'>
<form method = "POST" action="" enctype="multipart/form-data">
<table class='tabForm'>
<tr>
<td class='nomArticle'>Nom de l'article :</td>
<td><input type='text' class='inputArticle' name = 'nomAricle'></td>
</tr>
<tr>
<td class="titrePrix">Prix:</td>
<td class='inputPrix'><input type="texte" class="prixArticle" name="prixArticle"></td>
</tr>
<tr>
<td class='titreDescrArticle'>Description :</td>
<td><textarea type='text' class='descrArticle' name = 'descrArticle'></textarea></td>
</tr>
</table><br/>
<div class="saryTambatra">
<p class='img1'>Image n°01</p>
<input type="file" class="upload1" name="image1" /><br/>
<p class='img2'>Image n°02</p>
<input type="file" class="upload2" name="image2" /><br/>
<p class='img3'>Image n°03</p>
<input type="file" class="upload3" name="image3" />
</div><br/>
<input type = 'submit' name = 'subArticle' value = 'Ajouter'>
</form>
</div>
SCRIPT S_POST / $_FILES
<?php
session_start();
require_once("include/connexion.php");
if(isset($_POST['subArticle'])){
extract($_POST);
$nomArt = $_POST['nomAricle'];
$prixArt = $_POST['prixArticle'];
$descrArt = $_POST['descrArticle'];
$idmbr =$_POST['id_membre'];
$pseudo = $_SESSION['pseudo'];
$image1 = $_FILES["image1"]["name"];
$image2 = $_FILES["image2"]["name"];
$image3 = $_FILES["image3"]["name"];
$file_tmp_img1 = $_FILES["image1"]["tmp_name"];
$file_tmp_img2 = $_FILES["image2"]["tmp_name"];
$file_tmp_img3 = $_FILES["image3"]["tmp_name"];
move_uploaded_file($file_tmp_img1,"images/articles/$image1");
move_uploaded_file($file_tmp_img2,"images/articles/$image2");
move_uploaded_file($file_tmp_img3,"images/articles/$image3");
$query = $con_db->prepare(
'INSERT INTO articleboutik(
pseudo,
nomArt,
prixArt,
descrArt,
saryArt1,
saryArt2,
saryArt3
)
VALUES(
:pseudo,
:nomAricle,
:prixArticle,
:descrArticle,
:image1,
:image2,
:image3
)
');
$query->bindParam(':id_membre',$idmbr, PDO::PARAM_STR);
$query->bindParam(':pseudo',$pseudo, PDO::PARAM_STR);
$query->bindParam(':nomAricle',$nomArt, PDO::PARAM_STR);
$query->bindParam(':prixArticle',$prixArt, PDO::PARAM_STR);
$query->bindParam(':descrArticle',$descrArt, PDO::PARAM_STR);
$query->bindParam(':image1',$image1, PDO::PARAM_STR);
$query->bindParam(':image2',$image2, PDO::PARAM_STR);
$query->bindParam(':image3',$image3, PDO::PARAM_STR);
$query->execute();
header ('location: index.php');
}
Comptant sur vôtres précieuses aides.
Merci d'avance !
A l'aide s'il vous plait!
Je veux, lors de l'envoie d'un formulaire, convertir les images uploader par l'utilisateur.
Ce que j'ai en ce moment :
1- Un script formulaire
2- Script PHP pour récupération des $_POST et $_FILES pour insérer dans une base de donnée.
3- Fonction de conversion GD PHP
Ce que je voudrais faire :
- Convertir l'image avant de les sauvegarder dans un dossier spécifique avec lequel la base de donnée se relie.
- Cette conversion concerne la taille et la qualité comme je vais vou le montrer sur les script ci-dessous.
- Comment introduire cette fonction converImage dans l'Extract $_POST ?
- Si vous avez aussi l'idée de l'appliquer sur le format GIF et PNG. Je n'ai pas encore essayé mais si vous voulez l'aborder ce sera mieux !
FONCTION convertImage
convertImage('original/img212.jpg', 'final/img212.jpg', '640', '480', '100');
//original est le dossier qui content l'image source
//final c'est pour la destination de l'image redimensionnée
function convertImage($sources, $dest, $width, $height, $quality){
$imageSize = getimagesize($sources);
$imageRessource = imagecreatefromjpeg($sources);
$imageFinal = imagecreatetruecolor($width,$height);
$final = imagecopyresampled($imageFinal, $imageRessource, 0, 0, 0, 0, $width, $height, $imageSize[0], $imageSize[1]);
imagejpeg($imageFinal, $dest, $quality);
}
SCRIPT FORMULAIRE
<div class = 'saryTambatra'>
<form method = "POST" action="" enctype="multipart/form-data">
<table class='tabForm'>
<tr>
<td class='nomArticle'>Nom de l'article :</td>
<td><input type='text' class='inputArticle' name = 'nomAricle'></td>
</tr>
<tr>
<td class="titrePrix">Prix:</td>
<td class='inputPrix'><input type="texte" class="prixArticle" name="prixArticle"></td>
</tr>
<tr>
<td class='titreDescrArticle'>Description :</td>
<td><textarea type='text' class='descrArticle' name = 'descrArticle'></textarea></td>
</tr>
</table><br/>
<div class="saryTambatra">
<p class='img1'>Image n°01</p>
<input type="file" class="upload1" name="image1" /><br/>
<p class='img2'>Image n°02</p>
<input type="file" class="upload2" name="image2" /><br/>
<p class='img3'>Image n°03</p>
<input type="file" class="upload3" name="image3" />
</div><br/>
<input type = 'submit' name = 'subArticle' value = 'Ajouter'>
</form>
</div>
SCRIPT S_POST / $_FILES
<?php
session_start();
require_once("include/connexion.php");
if(isset($_POST['subArticle'])){
extract($_POST);
$nomArt = $_POST['nomAricle'];
$prixArt = $_POST['prixArticle'];
$descrArt = $_POST['descrArticle'];
$idmbr =$_POST['id_membre'];
$pseudo = $_SESSION['pseudo'];
$image1 = $_FILES["image1"]["name"];
$image2 = $_FILES["image2"]["name"];
$image3 = $_FILES["image3"]["name"];
$file_tmp_img1 = $_FILES["image1"]["tmp_name"];
$file_tmp_img2 = $_FILES["image2"]["tmp_name"];
$file_tmp_img3 = $_FILES["image3"]["tmp_name"];
move_uploaded_file($file_tmp_img1,"images/articles/$image1");
move_uploaded_file($file_tmp_img2,"images/articles/$image2");
move_uploaded_file($file_tmp_img3,"images/articles/$image3");
$query = $con_db->prepare(
'INSERT INTO articleboutik(
pseudo,
nomArt,
prixArt,
descrArt,
saryArt1,
saryArt2,
saryArt3
)
VALUES(
:pseudo,
:nomAricle,
:prixArticle,
:descrArticle,
:image1,
:image2,
:image3
)
');
$query->bindParam(':id_membre',$idmbr, PDO::PARAM_STR);
$query->bindParam(':pseudo',$pseudo, PDO::PARAM_STR);
$query->bindParam(':nomAricle',$nomArt, PDO::PARAM_STR);
$query->bindParam(':prixArticle',$prixArt, PDO::PARAM_STR);
$query->bindParam(':descrArticle',$descrArt, PDO::PARAM_STR);
$query->bindParam(':image1',$image1, PDO::PARAM_STR);
$query->bindParam(':image2',$image2, PDO::PARAM_STR);
$query->bindParam(':image3',$image3, PDO::PARAM_STR);
$query->execute();
header ('location: index.php');
}
Comptant sur vôtres précieuses aides.
Merci d'avance !
A voir également:
- PHP conversion image avant de l'inserer dans la base de donnée
- Insérer une vidéo dans powerpoint - Guide
- Base de registre - Guide
- Insérer signature word - Guide
- Comment insérer des points de suite sur word - Guide
- Insérer une image dans word sans bouger le texte - Guide
2 réponses
Bonjour,
Pour résumer et être sûr d'avoir compris, ce que tu veux c'est modifier la taille des images et les convertir dans un format particulier?
Si oui, regarde du côté des fonctions php GD imagecreatefromgif, imagecreatefromjpeg imagecreatefrompng et imagecopyresized.
C'est bien ce que tu recherches?
Pour résumer et être sûr d'avoir compris, ce que tu veux c'est modifier la taille des images et les convertir dans un format particulier?
Si oui, regarde du côté des fonctions php GD imagecreatefromgif, imagecreatefromjpeg imagecreatefrompng et imagecopyresized.
C'est bien ce que tu recherches?
D'abord merci pour votre reponse.
Vous voyez,
Ce que je cherche c'est lorsqu'un utilisateur valider le formulaire, c'est à dire les information qu'il entre y compris les images. Je veux que que quelque soit la taille de ses image, je veux les reduire à un format quelconque avant de les "move_uploaded_file" .
Si vous pouvez regarder mes script, j'ai une fonction de conversion qui marche bien (je l'ai déjà testé hors de cette formulaire) et je me demande: comment l'introduire à la recupération des $_POST ou plus précisement $_FILES parce qu'il s'git d'une image. Et tout cela avant de les stocker dans le dossier de destination(move_uploaded_file/...)
Je ne veux pas modifier leur extention (jpeg, png, gif), non!
Merci.
Cordialement.
Lerod
Par contre je crois que $_FILES['mon_image']['tmp_name'] te retourne uniquement le nom de l'image temporaire stockée sur le serveur, pas son chemin complet.
Utilise
dans ce cas, mais je recommande vivement d'utiliser un nom que tu mets toi même pour l'image de sortie pour éviter les collisions.
Du style par exemple (avec $ext l'extension que ton fichier de sortie).
Je vais les tester ce soir parce que je suis encore au bureau et je vous donnerai un retour demain.
Ecore merci et bonne cintinuation.
J'ai fais comme vous m'avez conseillé, mais il y a encore d'erreurs!
Voila ce qui se passe:
L'image a bien été redimensionnée à taille 640*480 et stocké dans le dossier "final" MAIS il n'y a que de fond noir, elle a la même extension que l'image uploadé (.jpg).
Et quelques messages d'erreurs:
Warning: getimagesize: failed to open stream: Invalid argument
Warning: imagecreatefromjpeg: failed to open stream: Invalid argument
Warning: imagecopyresampled: failed to open stream: Invalid argument
Ci bas le script:
<!--formulaire-->
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
En attendant impatiemment votre reponses.
Merci. et bonne journée
Cordialement