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

Posté par (page perso) . Licence CC by-sa
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

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 à ceux qui les ont postés. Nous n'en sommes pas responsables.