image_small.php如下所示:
<?php
$id = (isset($_GET['im'])) ? $_GET['im'] : 0;
//fetch the image from database
$query='SELECT image_small FROM hr_employee WHERE id='.$id;
$result = pg_query($dbconn, $query) or die('Query failed: ' . pg_last_error());
$raw = pg_fetch_row ( $result ,0)
$img=$raw['image_small'];
header("Content-Type: image/png");
if( !file_exists($cachefile) ) {
imagepng($img, $cachefile);
imagedestroy($img);
}
$fp = fopen($cachefile, 'rb');
fpassthru($fp);
exit;
?>
我收到以下错误:
imagepng()期望参数1为资源,字符串为
答案 0 :(得分:2)
我认为您的数据库包含base64编码的图像数据。
尝试将代码更改为
$img = base64_decode($raw['image_small']);
并查看输出是否发生变化。
答案 1 :(得分:1)
错误非常明确,imagepng需要资源。简单来说,想象一个资源作为一个对象,你不能从中知道这个类。事实上,GD是用C语言开发的,而PHP包装了所有未知的 C结构内部资源。
因此,在使用gd-family函数之前,您需要让GD为您创建此资源。如果您将图像存储为原始图像,则会将其生成,并且需要使用imagecreatefromstring函数。
$gdh = imagecreatefromstring($img);
imagepng($gdh, $cachefile);