2010-09-18 162 views

回答

2

您将需要此扩展FPDF:http://www.fpdf.org/en/script/script45.php

[更新]

$query = "SELECT imageField FROM yyy WHERE ..."; 
$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 
$image = $row['imageField']; 

$pdf->MemImage($image, 50, 30); 
+0

谢谢你的回复,我试过了,但我相信只有当图像保存到主机时才有效。但我目前的图像保存在mysql(blob)中。 – 2010-09-19 10:28:26

+0

这正是这个脚本的用途。你需要将你的blob加载到一个变量中,然后使用'MemImage($ blob,...)'方法 – Mchl 2010-09-19 11:06:11

+0

对不起,但我还是不太了解,并且希望得到你的指导方针...的扩展。我有copr的例子... – 2010-09-19 12:43:02

0
//Alternatively 
//1) Put the class VariableStream inside your php file instead of declaring it 
//-------------------------- 

enter code here 

class VariableStream 
{ 
    var $varname; 
    var $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(); 
    } 
} 
//---------------------------------------------------- 
//2) open and read your mysql longblob that contains your binary data from your image 
//in my case the function declaration is this 

function showImage($cdImg) { 

Global $pdf; 
    //declare your pdf class 
    //Connects the way you do. this case assigned as $odbc_conn 

    $query = 'SELECT cd_img, ds_img, bin_img FROM tb_img WHERE cd_img = '.$cdImg; 

$result= mysqli_query($odbc_conn, $query); 

    $row = mysqli_fetch_array($result); 

    if (!empty($row["bin_img"])) 
    { 

    //IF your data is encoded 
    //$data=base64_decode($row['bin_img']); 
    // 
     $data=$row['bin_img']; 
    } 

    mysqli_free_result($result); 

    mysqli_close($odbc_conn); 

    stream_wrapper_register('var', 'VariableStream'); 

$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) 
     $pdf->Error('Invalid image data'); 
     $type = substr(strstr($a['mime'],'/'),1); 
     $pdf->Cell(1); 
     $pdf->Cell(26, 1, '', '', 0,'L'); 
     $pdf->Cell(150, 1, '', '', 1,'L'); 
     //650=150 choose your options for height and width 
     //845=156 
     //$xc=ceil((676-$a['width'])/2); 

     $pdf->Image('var://'.$v, 44, $y, 150, 0, $type, $link); 

     unset($GLOBALS[$v]); 
} 
0

这是代码$pdf->Image('http://www.elwebmaster.com/wp-content/uploads/2015/06/PHP-logo.png',30,278,8);或者如果你的根目录$pdf->Image($_SESSION['raiz'].'imagens/tsunami.jpg',150,285,12);

你可以有斑点保存图像在你的SQL数据库中,然后使用$pdf->Image($_SESSION['raiz'].'imagens/picture.php?id=1',150‌​,285,12);其中id是数据库索引,picture.php是文件rets rieve你想要显示的图像