7
votes

PHP: Comment créer une chaîne d'image binaire sans l'enregistrer dans un fichier?

J'ai une variable d'image,

$im = imagecreatetruecolor(400, 300);


0 commentaires

3 Réponses :


9
votes
ob_start();
imagejpeg($im);
$imageString = ob_get_clean();

0 commentaires

2
votes

comme fonction et ajout ImageDestroy () code>.

function imagejpeg_tostring($im,$quality=75) {
      ob_start(); //Stdout --> buffer
      imagejpeg($im,NULL,$quality); // output ...
      $imgString = ob_get_contents(); //store stdout in $imgString
      ob_end_clean(); //clear buffer
      imagedestroy($im); //destroy img
      return $imgString;
}


0 commentaires

12
votes

Oui, c'est possible (même sans tampon de sortie). Il est sans papiers qu'il semble que cela semble, mais vous pouvez transmettre une ressource de flux au lieu d'un nom de fichier.

<?php

$stream = fopen("php://memory", "w+");
$i = imagecreatetruecolor(200, 200);
imagepng($i, $stream);
rewind($stream);
$png = stream_get_contents($stream);


1 commentaires

Belle solution! Beaucoup plus propre que de rediriger toute la sortie du script. Devrait être la réponse acceptée.