首页 > 解决方案 > 从字节字符串以 PHP 显示图像

问题描述

因为我的英语能力不够,

请事先确认

使用 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/

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

我应该怎么办?

删除标题('内容类型:图像/ png')

添加标题('内容类型:图像/ png')

标签: phpmongodb

解决方案


完全未经测试,但考虑到图像中显示的数据的性质,您可以尝试使用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 );
}

推荐阅读