php - 从字节字符串以 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/
但是,很难将其输出为图像。
我应该怎么办?
解决方案
完全未经测试,但考虑到图像中显示的数据的性质,您可以尝试使用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 );
}
推荐阅读
- java - 微服务最佳实践 - 3 级数据结构
- reactjs - 为 create-react-app 生成类型声明
- mongodb - mongodb设计多态与嵌入式
- javascript - iPad Safari 音频元素 play() 成功但听不到实际音频
- c++ - 为什么我不能调用我的结构信号量方法?
- c# - 在数组中创建具有较小数字的新数组
- reactjs - 我无法使用无头 Wordpress 和 Graphql 获得纯文本
- javascript - React.js:你可能需要一个合适的加载器来处理这个文件类型,目前没有配置加载器来处理这个文件
- python - 重复提取两个词之间的结构化数据
- c++ - 来自命令行的 proto 中的条件设置选项