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 :

Convertir image PHP [PHP 5.1]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut Convertir image PHP
    Bonjour,

    J'ai fais un système d'upload permettant à un membre de mettre un avatar.
    J'arrive à afficher cette image avec un watermark, selon l'id du membre.

    Le souci c'est que l'image est en PHP, donc du coup ça prend tout une page, je ne peux pas afficher d'autres informations dans cette même page.

    Comment faire en sorte de mettre l'avatar fusionné avec le watermark et afficher d'autres informations dans cette même page ?

    Désolé pour ma clareté, n'hésitez pas à me faire reformuler ma requête si besoin.

    Des solutions ?

    Au plaisir de vous lire.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Par défaut
    Bonsoir !

    Qu'entends-tu par "l'image est en php" ?

    Dis comme ça on dirait que php serait son format (non-sens), tu vois ce que je veux dire ?

    Si c'est un problème de dimension, pourquoi ne pas le réglementer au moment ou l'utilisateur renseigne son image ?

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    il faut que t'enregistre l'image

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    Merci pour ces réponses,

    si vous voulez je peux mettre un bout de mon code.

    Hugo_O,
    j'ai utilisé cette fonction: http://php.net/manual/fr/function.imagecopymerge.php peut-être qu'en te montrant ça, ce sera plus explicite. (:

    stealth35,
    il faut que j'enregistre l'image à chaque fois ?
    Mais ça va faire deux images pour chaque upload non ?
    Comment faire pour enregistrer l'image automatiquement ?

    Au plaisir.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    montre ton code

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pas mieux : soit tu enregistres directement l'image avec watermark, soit tu fais un script qui affiche l'image avec watermark et tu l'appelles comme src d'une balise img.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    home.php:
    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
    <html>
    	<head>
    		<title>BOS Upload</title>
    	</head>
    	<body>
    		<form method="post" action="./home.php" enctype="multipart/form-data">
    			<!-- Limiter la taille à 500Ko. -->
    			<input type="hidden" name="MAX_FILE_SIZE" value="500000" />	
    			Fichier: <input type="file" name="avatar" id="avatar" /><br />
    			<font size="1"><i>Taille maximum: 500 Ko.</i></font><br /><br />
    			<input type="submit" name="validate" value="Valider" />
    		</form>
    		<br /><br /><a href="user.php?id=1">TEST</a>
    	</body>
    </html>
    Je veux afficher le profil de l'utilisateur qui a l'id 1, user.php:
    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
    <?php
    include ('../includes/mysqli.php');
     
    if (isset($_GET['id']))
    	{
    		$id = intval($_GET['id']);
     
    		$sql = 'SELECT avatar FROM users WHERE id = "' . $id . '"';
    		$result = mysqli_query($mysqli, $sql);
    		$data = mysqli_fetch_assoc($result);
     
    		if ($data['avatar'] != NULL)
    			{
    				include ('avatar.php');
    			}
    		echo '<img src="' . $image . '" />';
    	}
    avatar.php (code pris du SDZ):
    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
    <?php
    header ("Content-type: image/png"); // L'image que l'on va créer est un jpeg
     
    // On charge d'abord les images
    $source = imagecreatefrompng('logo.png'); // Le logo est la source
    $destination = imagecreatefromjpeg("avatars/${data['avatar']}"); // La photo est la destination
     
    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);
     
    // On veut placer le logo en bas à droite, on calcule les coordonnées où on doit placer le logo sur la photo
    $destination_x = $largeur_destination - $largeur_source;
    $destination_y =  $hauteur_destination - $hauteur_source;
     
    // On met le logo (source) dans l'image de destination (la photo)
    imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 30);
     
    // On affiche l'image de destination qui a été fusionnée avec le logo
    imagepng($destination);

    Celira, je n'arrive pas à l'appeler comme src d'une balise img, ou plutôt je ne comprends pas très bien.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    utilise le deuxième paramètre de $filename et vire le header

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    Mais comment je fais pour l'appeler dans user.php ?

    Je comprends pas très bien.

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ca va mettre ca dans un fichier, donc met le lien du fichier dans ta balise

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Alternative, en conservant le header, tu peux passer la valeur de $data['avatar'] en paramètre de ton script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $destination = imagecreatefromjpeg('avatars/'.$_GET['avatar']); // La photo est la destination
    et l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="avatar.php?avatar='.$data['avatar'].'" />';
    Mais la solution de stealth est quand même plus propre (surtout au niveau cache, vu qu'une image chargée via un script php n'est pas mise en cache, il me semble...)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    Oula, je comprends toujours pas.
    Qu'est ce qu'il va mettre ça ? Et c'est quoi ça ?

    Désolé pour ma non compréhension. :/

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Spire_ Voir le message
    Oula, je comprends toujours pas.
    Qu'est ce qu'il va mettre ça ? Et c'est quoi ça ?

    Désolé pour ma non compréhension. :/
    la balise img attend un lien avec un fichier, donc cree le fichier ...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    Et que dois-je mettre dans ce fichier ?

  15. #15
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Spire_ Voir le message
    Et que dois-je mettre dans ce fichier ?
    ce que je t'ai dis plus haut

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    Mais je ne vois pas où est $filename.

  17. #17
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Spire_ Voir le message
    Mais je ne vois pas où est $filename.
    t'en créer un pour chaque utilisateur

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    Je comprends absolument rien.

    Merci quand même. (:

  19. #19
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Spire_ Voir le message
    Je comprends absolument rien.

    Merci quand même. (:




    vire ton header et fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $image = md5($data['avatar']).'.png';
    imagepng($destination, $image);

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    Merci beaucoup !

    Tout fonctionne correctement.
    Lors de l'upload de l'image, je fais un sha256 de time(), mais si plusieurs personnes upload leur avatar en même temps, ils vont avoir le même hash non ? Comment faire pour le rendre unique en quelque sorte ?

    Edit:

    J'ai concaténé mon $filename et time(), donc tout est bon, merci à vous !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Upload] Upload images php
    Par lls dans le forum Langage
    Réponses: 15
    Dernier message: 19/07/2007, 19h23
  2. [PHP-JS] convertir tableau php en tableau javascript
    Par stecale dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2006, 18h09
  3. convertir code php en asp
    Par goaim dans le forum ASP
    Réponses: 1
    Dernier message: 19/10/2006, 16h53
  4. Réponses: 2
    Dernier message: 27/09/2005, 13h46

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