Import memory images

This script allows to display images that are loaded in memory

Informations

Author: Olivier
License: FPDF

Description

This script allows to display images that are loaded in memory without the need of temporary files. There are two main uses:

- When an image is loaded from a database
- When an image is created with GD

For an image loaded into a string:

MemImage(string data [, float x [, float y [, float w [, float h [, mixed link]]]]])

For a GD image:

GDImage(resource im [, float x [, float y [, float w [, float h [, mixed link]]]]])

where im is the GD identifier. If you use JpGraph, you can retrieve it via a call to $graph->Stroke(_IMG_HANDLER).

Source

<?php require('fpdf.php'); // Stream handler to read from global variables class VariableStream { private $varname; private $position; function stream_open($path, $mode, $options, &$opened_path) { $url = parse_url($path); $this->varname = $url['host']; if(!isset($GLOBALS[$this->varname])) { trigger_error('Global variable '.$this->varname.' does not exist', E_USER_WARNING); return false; } $this->position = 0; return true; } function stream_read($count) { $ret = substr($GLOBALS[$this->varname], $this->position, $count); $this->position += strlen($ret); return $ret; } function stream_eof() { return $this->position >= strlen($GLOBALS[$this->varname]); } function stream_tell() { return $this->position; } function stream_seek($offset, $whence) { if($whence==SEEK_SET) { $this->position = $offset; return true; } return false; } function stream_stat() { return array(); } } class PDF_MemImage extends FPDF { function __construct($orientation='P', $unit='mm', $format='A4') { parent::__construct($orientation, $unit, $format); // Register var stream protocol stream_wrapper_register('var', 'VariableStream'); } function MemImage($data, $x=null, $y=null, $w=0, $h=0, $link='') { // Display the image contained in $data $v = 'img'.md5($data); $GLOBALS[$v] = $data; $a = getimagesize('var://'.$v); if(!$a) $this->Error('Invalid image data'); $type = substr(strstr($a['mime'], '/'), 1); $this->Image('var://'.$v, $x, $y, $w, $h, $type, $link); unset($GLOBALS[$v]); } function GDImage($im, $x=null, $y=null, $w=0, $h=0, $link='') { // Display the GD image associated with $im ob_start(); imagepng($im); $data = ob_get_clean(); $this->MemImage($data, $x, $y, $w, $h, $link); } } ?>

Example

<?php require('mem_image.php'); $pdf = new PDF_MemImage(); $pdf->AddPage(); // Load an image into a variable $logo = file_get_contents('logo.jpg'); // Output it $pdf->MemImage($logo, 50, 30); // Create a GD graphics $im = imagecreate(200, 150); $bgcolor = imagecolorallocate($im, 255, 255, 255); $bordercolor = imagecolorallocate($im, 0, 0, 0); $color1 = imagecolorallocate($im, 255, 0, 0); $color2 = imagecolorallocate($im, 0, 255, 0); $color3 = imagecolorallocate($im, 0, 0, 255); imagefilledrectangle($im, 0, 0, 199, 149, $bgcolor); imagerectangle($im, 0, 0, 199, 149, $bordercolor); imagefilledrectangle($im, 30, 100, 60, 148, $color1); imagefilledrectangle($im, 80, 80, 110, 148, $color2); imagefilledrectangle($im, 130, 40, 160, 148, $color3); // Output it $pdf->GDImage($im, 120, 25, 40); imagedestroy($im); $pdf->Output(); ?>
View the result here.

Download

ZIP | TGZ

Quelle

http://www.fpdf.org/en/script/script45.php, zuletzt abgerufen 02.10.2016 15:03