通过PHP回声图像

时间:2015-02-26 10:26:55

标签: php base64

对于时事通讯脚本,我喜欢使用图像来检查它是否被读取。所以我们在脚本中制作了这样的图像:

<img src="[url]/getEmailImage/test/">

当触发此网址时,会注册该邮件已打开。

在服务器端,我们使用这种meganism:

// register that the email is read
$this->modelOpslag->changeByToken($token,array('gelezen' => '1'));  

// download image and show is
$image = base_url().'external/afbeeldingen/pixel.jpg';
$info = getimagesize($image);   
header('Content-Type: '.$info['mime']);
echo file_get_contents($image);             
exit;

当我删除PHP标头函数时,显示如下:

����JFIF``��rExifMM*JR(1Z``paint.net 4.0.5�� 

等...

使用标题我的浏览器会出错:图像无法显示,因为包含错误。

我做错了什么?

- 编辑 -

我没有针对这个具体问题的解决方案,但我找到了一个替代方案,以防有人喜欢使用这种meganism来制作时事通讯。

$file = './external/afbeeldingen/pixel.jpg';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}

2 个答案:

答案 0 :(得分:0)

如果我正确地理解了您的问题...您正在尝试回显图像,使用回声我们无法显示图像.. 你为什么不用......

<img src="<?php echo file_get_contents($image); ?>" />

答案 1 :(得分:0)

您需要使用不同的标题进行图像下载和动态显示图像。此外,php脚本的文件编码格式可能会导致图像数据损坏。