Forum Programmation.php répondre un fichier existant ? file_get_contents + echo ?

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
0
12
fév.
2015

Voici un petit bout de code par lequel je "répond" un fichier au format PNG réalisé à partir d'un fichier PDF. Étant donné le temps que cela peut prendre, pour un grand nombre de fichiers, j'enregistre le PNG généré et le "répond" directement s'il existe déjà.

Ce script php est impliqué dans une page "Ajax", genre <img src="small.php?filebase=nom%20du%20fichier">

C'est encore perfectible, notamment en tenant compte de la date de modification du fichier PDF (mise à jour du PNG), etc.

Mais ma question concerne le fait de "répondre" un fichier déjà existant… Est-ce efficace ? peut-on faire mieux, plus rapide, plus directe que file_get_contents + header + echo ?

<?php
  $filebase = $_GET["filebase"];
  $dir = "templates";
  $filePDF = "$dir/$filebase.pdf";
  $filePNG = "$dir/$filebase.png";

  if( ! file_exists( $filePNG ) )
  {

    $img = new imagick();
    $img->setResolution(200,200);
    $img->readImage("{$filePDF}[0]");
    $img->scaleImage(50,0);
    $img->setImageFormat("png");

    $shadow = $img->clone();
    $shadow->setImageBackgroundColor(new ImagickPixel('black'));
    $shadow->shadowImage(80, 3, 0, 0);
    $shadow->compositeImage($img, Imagick::COMPOSITE_OVER, 0, 0);

    try {
      $shadow->writeImages($filePNG, false);
    } catch(Exception $e)
    {}

    header("Content-type: image/png");
    echo $shadow;

  } else {

    $img = file_get_contents( $filePNG );
    header("Content-type: image/png");
    echo $img;

  }
?>

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.