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 :

enregistrement d'une image copyrightée


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut enregistrement d'une image copyrightée
    Bonjour a tous.

    Voici mon soucis

    Je cree une image avec copyright comme ceci:
    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
     
    header ("Content-type: image/jpeg"); // L'image que l'on va cr�er est un jpeg
    //On recupere le nom de la photo demand�
    $imgAtraiter=$id_post=$_GET['image'];
    // On charge les images
    $source = imagecreatefrompng("tag7.png"); // Le logo est la source
    $destination = imagecreatefromjpeg($imgAtraiter); // 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, 40);
     
    // On affiche l'image de destination qui a �t� fusionn�e avec le logo
    imagejpeg($destination);
    //<img src="copyrighter.php?image=piaf.jpg" hight=600px width=600px/>
    jusqu'a la pas de soucis.

    Mon probleme est que maintenant j'aimerais rendre possible de telecharger cette photo avec le copyright mais la sa plante.
    Je suis partis du principe que je ne pouvait peut etre pas uploader un fichier qui n'existe qu'a l'affichage (pas sur de moi sur ce coup la malgré tout.)
    Du coup je voudrais savoir si quelqun savait si on pouvait enregistrer cette image generé sur le disque le temps de l'upload sous forme .jpg et si oui comment.

    Merci d'avance

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Salut,

    La fonction que tu utilises déjà, il lui faut le deuxième paramètre :

    http://php.net/manual/fr/function.imagejpeg.php

    En gros, le lien où tu l'enregistres ;-)

  3. #3
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Sais tu si il y a un moyen de télécharger l'image généré de cette façon sans l'enregistrer sur sur le serveur?
    Le but étant de faire le copyright sans toucher en fait a l'image d'origine tout en permettant le DL de l'image avec le copyright.

  4. #4
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Avec un header pour télécharger l'image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier = file_get_contents($lien_jpg);
    header('Content-Disposition: attachment; filename="'.$fichier.'"');
    ça passe un truc dans ce genre ?

  5. #5
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Au debut j'esperais le faire comme sa:
    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
     
    <?php
     
     $img = $_GET["photo"];
    //Cr�ation des headers, pour indiquer au navigateur qu'il s'agit d'un fichier a telecharger
      header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier)
      header('Content-Disposition: attachment; filename="'.$img.'"'); //Nom du fichier
      //header('Content-Length: '.$bdd_infos['up_filesize']); //Taille du fichier
     
    //Envoi du fichier dont le chemin est pass� en param�tre
      //readfile("../container_uplad/".$img);
     
      readfile("../copyrighter.php?image=container_uplad/".$img);
     
    ?>
    Mais évidement comme sa sa me télécharge un fichier vide sniff.

  6. #6
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Il te faut deux fichiers :

    - un qui génére le .jpg (donc avec un header pour afficher une image)
    - l'autre qui va télécharger cette image

    Dans ton fichier de téléchargement tu fais :


    $fichier = file_get_contents('mon_image.php');
    header('Content-Disposition: attachment; filename="'.$fichier.'"');

    Et logiquement ton image se téléchargera.

  7. #7
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    J'ai essaye comme tu me l'a conseillé:
    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
    <?php
     
     $img = $_GET["photo"];
     $img = file_get_contents("copyrighter.php?image=container_uplad/".$img);
    //Cr�ation des headers, pour indiquer au navigateur qu'il s'agit d'un fichier a telecharger
      header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier)
      header('Content-Disposition: attachment; filename="'.$img.'"'); //Nom du fichier
      //header('Content-Length: '.$bdd_infos['up_filesize']); //Taille du fichier
     
    //Envoi du fichier dont le chemin est pass� en param�tre
      //readfile("../container_uplad/".$img);
     
     readfile($img);
     
    //$fichier = file_get_contents('mon_image.php');
    //header('Content-Disposition: attachment; filename="'.$fichier.'"');
     
    ?>
    Mais il me sort une belle erreur no such file in directory malgre la presence du dit fichier dans le doissier (sisi je suis pas sur de grand chose mais la je suis cathegorique arf)

    Quelqun aurait une corde pour me pendre ??

  8. #8
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Comme sa j'ai plus de problemes de no such file or directory:
    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
    <?php
     
     $img = $_GET["photo"];
     $img2 = file_get_contents("../copyrighter.php?image=container_uplad/".$img);
    //Cr�ation des headers, pour indiquer au navigateur qu'il s'agit d'un fichier a telecharger
      header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier)
      header('Content-Disposition: attachment; filename="'.$img.'"'); //Nom du fichier
     
     
    //Envoi du fichier dont le chemin est pass� en param�tre
      //readfile("../container_uplad/".$img);
     
     readfile($img2);
     
    //$fichier = file_get_contents('mon_image.php');
    //header('Content-Disposition: attachment; filename="'.$fichier.'"');
     
    ?>
    Mais retour a la case depart car le DL se fait mail l'image est vide.

  9. #9
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Malgré mes recherches toujours pas de soluce a l'horizon snif.

    Si quelqun a une idée autre que faire l'enregistrement sur le DD du serveur avant DL je suis preneur

  10. #10
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu appliques readfilesur un contenu de fichier et non pas un fichier. Tu as essayé avec un bête echo ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $img = $_GET["photo"];
    $img2 = file_get_contents("../copyrighter.php?image=container_uplad/".$img);
    //Cr�ation des headers, pour indiquer au navigateur qu'il s'agit d'un fichier a telecharger
    header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier)
    header('Content-Disposition: attachment; filename="'.$img.'"'); //Nom du fichier
    echo $img2;
     
    ?>

  11. #11
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Bon tout sa commencais a m'enerver serieusement et j'ai du me resoudre a en passer par ce que je voulais éviter car pressé par les délais.
    J'enregistre le copyright avant de le telecharger puis l'efface apres traitement.

    Pour info sa donne sa:
    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
    $fullPath = $_GET['photo'];
     
    /*-----------------------------------------------------------------------------------------------*/
    $source = imagecreatefrompng("../tag7.png"); // Le logo est la source
    $destination = imagecreatefromjpeg("../container_uplad/$fullPath"); // 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, 40);
    // On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
    imagejpeg($destination, "../container_uplad/copyrighted/$fullPath");
     
    /*--------------------------------------------------------------------------------------------------*/
    $fullPath = "../container_uplad/copyrighted/$fullPath";
    header( 'Pragma: no-cache' );
    header( 'Cache-Control: no-cache, must-revalidate' );
    header( 'Expires: 0' );
    header( 'Content-Transfer-Encoding: binary' );
    header( 'Content-Length: ' . filesize( $fullPath ) );
    header( 'Content-Type: application/octetstream; name="' . basename($fullPath) . '"' );
    header( 'Content-Disposition: attachment; filename="' .  basename($fullPath) . '"' );
    readfile($fullPath);
    unlink ($fullPath);
    //exit();
    Merci en tout cas pour votre aide

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

Discussions similaires

  1. Probleme d'enregistrement d'une image
    Par mimane_01 dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/04/2007, 22h49
  2. Enregistrement d'une image avec Firefox
    Par Eusebius dans le forum Applications et environnements graphiques
    Réponses: 9
    Dernier message: 05/07/2006, 11h22
  3. [VB.NET]Enregistrement d'une image
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/06/2006, 08h03
  4. Empêcher l'enregistrement d'une image
    Par Patrick Seuret dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/09/2005, 19h13
  5. Enregistrement d'une image sur le serveur
    Par MHI dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2005, 15h25

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