从字节字符串以Php显示图像

时间:2018-07-30 16:35:51

标签: php mongodb

因为我的英语能力不足,

请事先确认

使用MongoDB(GridFS)带来了图像。

$bucket = $this->mDB->selectGridFSBucket([
               'bucketName' => $collection,
               'readPreference' => new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY),
            ]);

$stream = $bucket->openDownloadStream($id);
$im = stream_get_contents ( $stream );
header('Content-Type: image/png');
echo $im;

示例:https://docs.mongodb.com/php-library/v1.2/tutorial/gridfs/

但是,很难将其输出为图像。

我该怎么办?

remove header('Content-Type: image/png')

added header('Content-Type: image/png')

1 个答案:

答案 0 :(得分:0)

完全未经测试,但是考虑到图像中显示的数据的性质,您可以尝试使用imagecreatefromstring-类似以下内容:

$bucket = $this->mDB->selectGridFSBucket([
               'bucketName' => $collection,
               'readPreference' => new MongoDB\Driver\ReadPreference( MongoDB\Driver\ReadPreference::RP_SECONDARY ),
            ]);

$stream = $bucket->openDownloadStream( $id );
$im = imagecreatefromstring( stream_get_contents ( $stream ) ) ;
if( $im ){
    header( 'Content-Type: image/png' );
    imagepng( $im );
    imagedestroy( $im );
}

您可以在流数据上尝试base64_decode(我真的不知道流的内容是什么)

$im = imagecreatefromstring( base64_decode( stream_get_contents ( $stream ) )  );
if( $im ){
    header( 'Content-Type: image/png' );
    imagepng( $im );
    imagedestroy( $im );
}