une - php image creation




Sortie d'une image en PHP (6)

Essaye ça:

<?php
  header("Content-type: image/jpeg");
  readfile("/path/to/image.jpg");
  exit(0);
?>

J'ai un $file image $file (par exemple ../image.jpg )

qui a un type mime $type

Comment puis-je le sortir dans le navigateur?


Si vous avez la liberté de configurer vous-même votre serveur web, des outils comme mod_xsendfile (pour Apache) sont nettement meilleurs que lire et imprimer le fichier en PHP. Votre code PHP ressemblerait à ceci:

header("Content-type: $type");
header("X-Sendfile: $file"); # make sure $file is the full path, not relative
exit();

mod_xsendfile récupère l'en-tête X-Sendfile et envoie le fichier au navigateur lui-même. Cela peut faire une réelle différence de performance, en particulier pour les gros fichiers. La plupart des solutions proposées lisent le fichier entier en mémoire et l'impriment ensuite. C'est OK pour un fichier image de 20 Ko, mais si vous avez un fichier TIFF de 200 MByte, vous risquez d'avoir des problèmes.


Vous pouvez utiliser l'en- header pour envoyer le bon type de contenu:

header('Content-Type: ' . $type);

Et readfile pour afficher le contenu de l'image:

readfile($file);


Et peut-être (probablement pas nécessaire, mais, au cas où) vous devrez envoyer l'en-tête Content-Length aussi:

header('Content-Length: ' . filesize($file));


Remarque: assurez-vous que vous ne produisez rien d'autre que vos données d'image (pas d'espace blanc, par exemple) , ou que ce ne sera plus une image valide.


    $file = '../image.jpg';
    $type = 'image/jpeg';
    header('Content-Type:'.$type);
    header('Content-Length: ' . filesize($file));
    $img = file_get_contents($file);
    echo $img;

Ceci fonctionne pour moi! Je l'ai testé sur l'allumeur de code. Si j'utilise readfile, l'image ne s'affichera pas. Parfois, seulement afficher jpg, parfois seulement gros fichier. Mais après je l'ai changé pour "file_get_contents", j'obtiens la saveur, et fonctionne! ceci est le screenshoot: Capture d'écran de "image sécurisée" de la base de données


$file = '../image.jpg';
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
readfile($file);

<?php

header("Content-Type: $type");
readfile($file);

C'est la version courte. Il y a quelques petites choses supplémentaires que vous pouvez faire pour rendre les choses plus agréables, mais cela fonctionnera pour vous.





image