无法将blob转换为图像

时间:2014-11-28 13:37:49

标签: php blob

我有一个数据库,其中图像保存为blob。现在,我想将这个blob数据转换为图像文件。

所以我已经制作了这段代码,但它没有给出任何结果

$sql_icon = "SELECT $off_table.icon,$off_table.id
            FROM $off_table,$cnt_table,$ctg_table
            WHERE  $off_table.id = $cnt_table.id
            AND $off_table.id = $ctg_table.id
            AND ".$cond_api."
            AND ".$cond_nt."
            AND ".$cond_cnt."
            AND ".$cond_ctg;


$result_icon = mysql_query($sql_icon);

while($row = mysql_fetch_array($result_icon)) 
    {
       $image = $row["icon"];
       $id = $row["id"];

       $file = fopen("./image/".$id.".jpg","w");
       fwrite($file, base64_decode($image));
       fclose($file);
    }

问题是,我正在获取文件但没有扩展名,如果我将它们重命名为“.jpg”扩展名,则显示“无法预览”

注:

通过此方法将图像保存到数据库中

$sql = "INSERT INTO aw_offers_v2
                    (
                    id,name,description,payout_type,
                    payout,expiration_date,creation_date,preview_url,
                    tracking_url,categories,countries,countries_short,
                    api_key,network_id, icon,icon_size)
                    VALUES
                    ('$id','$name','$description','$payout_type',
                    '$payout','$expiration_time','$creation_time','$preview_url',
                    '$tracking_url','$categories','$countries','$countries_short',
                    '$api','$api_url','".mysql_real_escape_string(file_get_contents($cover_image_src))."','".strlen(file_get_contents($cover_image_src))."')";

如果我写这段代码

echo '<img src="data:image/jpeg;base64,'. base64_encode($image).'" />';

然后我可以正确地看到图像。这意味着图像已成功保存。

但我无法将它们作为文件存储在文件夹中。

1 个答案:

答案 0 :(得分:1)

通过查看您的代码,您不会base64_encode您的形象。

所以你可以这样做:

 fwrite($file, $image);

当您显示将数据放入base64_encode标记的src属性中的图像时,您只需要<img

另请注意,您可以简化此操作:

$file = fopen(...);
fwrite($file, $image);
fclose($file);

只有一行:

file_put_contents("./image/{$id}.jpg", $image);