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

Bibliothèques et frameworks PHP Discussion :

[Imagick] Affichage d'une image binaire


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Points : 316
    Points
    316
    Par défaut [Imagick] Affichage d'une image binaire
    Bonjour

    Je test l'affichage d'image en ce moment pour updater mon site et j'ai un souci assez génant.
    Lorsque je demande à Imagick d'affiché l'image, celle-ci donne les lignes binaires (�PNG  IHDR`H�7ߑgAMA�� �a cHRMz&�����u0...)

    J'ai donc repris la base et utilisé l'exemple de la doc : http://php.net/manual/fr/imagick.examples-1.php
    J'ai pris le premier, le plus simple et j'ai toujours... (����JFIFHH�� XICC_PROFILE HLinomntrRGB XYZ � 1acspMSFTIEC s...)

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    header("Content-type: image/jpg");
     
     
    //$url = 'https://cdn.photographylife.com/wp-content/uploads/2014/06/Nikon-D810-Image-Sample-6.jpg';
    $url = 'Kevin.jpg';
    $image = new Imagick($url);
    $image->thumbnailImage(100, 0);
    echo $image;
    Identique à l'exemple de php.net

    Les deux images (onligne et local) sont valide et me donnent le même résultat.

    Est-ce que qqun à une idée? car pour moi, la seul solution est de créer une image temporaire sur le serveur que je supprime après traitement (beaucoup plus lourd à gérer)

    Merci d'avance
    Ma plateforme de formations digitales (développement Web, cybersécurité, SEO, Marketing digital)

    https://monformateurindependant.com

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Salut,

    Qu'est-ce que tu as/tu fais dans ton code avant ces lignes-là ? Est-ce qu'il n'y aurait pas autre chose dans le buffer ? (cf. ob_clean, etc)
    Sur la page de documentation, le mime type à utiliser est "image/jpeg" et non "image/jpg" (mais les deux fonctionnent chez moi).

    Sinon dans quel environnement développe-tu ? (windows/linux)
    Est-ce que le pacquet/la librairie php5-imagick est installé(é)/activé(e) ?

  3. #3
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 153
    Points : 316
    Points
    316
    Par défaut
    Salut

    Je pense que l'environnement pose problème puisque en ligne, ça fonctionne.
    Je test mon code sous Mac OSX avec MAMP et localhost et en ligne, je suis sous linux.

    J'ai installé (en local) imagick v3.1.2 et je suis avec PHP 5.6.2 (source : phpinfo() ).

    Le code entier est celui que j'ai posté et je n'utilise jamais ob_clean dans mes code.

    Merci
    Ma plateforme de formations digitales (développement Web, cybersécurité, SEO, Marketing digital)

    https://monformateurindependant.com

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Ça doit donc venir de ton installation de Imagick car le code fonctionne sous Ubuntu après avoir installé le paquet php5-imagick et redémarré Apache.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    J'ai le même problème que toi setni.
    je suis sur Wamp (windows), PHP 2.6.25 et Imagick 3.4.1

    J'ai fait exactement comme toi, j'ai essayé le bout de code de la documentation PHP (exemple 1).
    Par contre quand je teste le code sur le serveur, ça me fait la même chose que sur mon localhost.

    J'ai cherché tout la journée sans trouver de réponse.

    Pouvez vous nous aider s'il vous plait?
    Merci

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Vérifie que ton fichier .php est encodé sans bom
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Je viens de vérifier, il est encodé en UTF-8(sans BOM).

    Merci

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu obtiens quoi exactement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    header ('Content: image/jpeg');
     
    $image = new Imagick('12.jpg');
    $image->thumbnailImage(100, 0);
     
    echo $image;
    ?>
    ça me donne :

    http://libertalia-pirateisland.franc...Magicktest.php

    et si je retire thumbnailImage();

    Donc le code est celui ci =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    header ('Content: image/jpeg');
     
    $image = new Imagick('12.jpg');
    echo $image;
    ?>
    voila ce que cela me donne :
    http://libertalia-pirateisland.franc...agicktest2.php

    Ça me donne la même chose sauf qu'on voit bien que sur le deuxième lien (sans traitement sur l'image) la grandeur de "code" (je pas comment appeler ça...) est bien plus grande que sur le premier (avec le traitement de l'image).
    Donc j'ai l'impression que le traitement au niveau de Imagick est bien fait...

    Merci pour ton aide

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Est ce que ce serait pas un soucis d'encodage ?

    Quand on regarde le binaire on ne retrouve pas les caractères ÿØÿà typiques d'une image jpeg. En revanche on voit quand même que tu as 4 octet qui sont à priori mal encodé et qu'après on retrouve bien JFIF.

    Dans tous les cas les entêtes jpeg ne sont pas bonnes donc l'image ne s'affichera pas.
    Un moyen simple de vérifier si ça fonctionne est de recopier le contenu dans un fichier ".jpg". Si il s'ouvre avec la visionneuse de ton système c'est gagné sinon les données ne sont pas bonnes.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Désoler je suis pas sur d'avoir compris.
    Je copie le résultat que j’obtiens sur le navigateur, puis je le colle dans un fichier texte et je change l'extension en .jpg?

    Si c'est ça j'ai essayé et cela ne fonctionne pas.

    J'ai essayé avec une des images fournis dans le dossier de ImageMagick/images/bluebells_clipped.jpg et j'obtiens exactement la même chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    header ('Content: image/jpeg');
     
    $image = new Imagick('bluebells_clipped.jpg');
    echo $image;
    => resultat : http://libertalia-pirateisland.franc...agicktest3.php

    encore merci

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    C'est bon ça fonctionne.
    C'est moi qui est stupide

    J'avais pas compris qu'il fallait insérer le .php dans une balise <img />

    Donc quand je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="imageMagicktest.php" />
    Ca fonctionne.
    Est-ce que ça devrait quand même fonctionner en essayant d'afficher directement avec imageMagicktest.php ?

    Merci pour votre aide précieuse

  13. #13
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Oui ca devrait fonctionner en affichant directement ton script php. Comme tu peux le voir sur ton exemple les premiers octets sont ���� au lieu de ÿØÿà ce qui est caractéristique d'un problème d'encodage.
    Ca marche en intégrant ton php dans la balise img parce que tu dois avoir un encodage/décodage qui se fait mais c'est pas normal.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Effectivement tu as raison!!

    Quand j'ouvre mon image.jpeg avec notepad++, il m'indique que l'encodage est en ANSI et j'ai bien ÿØÿà ....... JFIF .......

    Donc j'ai recréer un .php encodé en ANSI je test et ourah !! ça fonctionne

    Merci beaucoup pour ton aide précieuse.

    Bonne continuation.

    C'est pas moi qui créer le post mais je pense que le sujet est résolut.

    Merci encore.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/04/2016, 15h33
  2. Réponses: 2
    Dernier message: 27/12/2004, 09h23
  3. Pbs d'affichage d'une image sur un panel
    Par ysr1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/09/2004, 09h55
  4. [FLASH MX] Qualité d'affichage d'une image
    Par n_tony dans le forum Flash
    Réponses: 3
    Dernier message: 16/08/2004, 09h44
  5. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 10h41

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