您如何将图像标签的源设置为二进制图像数据,我所看到的没有啥对我有用[重复]

Posted

技术标签:

【中文标题】您如何将图像标签的源设置为二进制图像数据,我所看到的没有啥对我有用[重复]【英文标题】:How can you set the source of a image tag to binary image data, Nothing I've seen is working for me [duplicate]您如何将图像标签的源设置为二进制图像数据,我所看到的没有什么对我有用[重复] 【发布时间】:2021-06-25 21:46:18 【问题描述】:

我有 php 从 memcached 获取的二进制图像数据,它将其发送到 javascript,然后 Javascript 创建一个新图像并将源设置为数据,数据已经在 base64_encoding 中, 由于它来自用户将图像文件上传到站点时的计算机,因此我使用 javascript FIle_Reader 获取二进制数据,将其发送到 php,并将其存储在 File_Server 和 memcached 中以供以后使用。 但是,当检索数据并尝试使用它来输出可视图像时,我得到了错误,我已经搜索了网络,但没有人真正为我的具体问题提供解决方案。

function Create_Img_From_Binary($data)
    $Data=json_encode($data);
    echo "
    <script>
    function Create_Img_From_Binary(data)
      let img= document.createElement('img');
      img.src=$data;
      document.body.appendChild(img); 
        
    
    Create_Img_From_Binary($Data);
    </script>
    ";
   

$fd= fopen("img.html",'r');
$data= fread($fd,filesize("img.html"));
Create_Img_From_Binary($data);




  The img.html file just contains the raw image data

【问题讨论】:

注意,我意识到我在javascript函数中使用的是$data而不是javascirpt-data,但是即使我进行了切换,它也会导致错误 这能回答你的问题吗? How to display Base64 images in HTML? 是的,它解释了如何准确显示数据 URL,但由于我仍然遇到错误,我认为数据本身是错误的,我不知道从哪里开始修复它。 如果我将图像数据放在 localStorage 中,通过使用 javascript 函数 JSON.stringify 然后使用 JSON.parse 检索它,一切正常,但为什么呢?如果我在从 php 传输的 javascript 变量中有相同的数据,为什么它不起作用? 也许对于初学者来说,停止在 PHP 和 JavaScript 中使用相同的函数和参数名称,因为您似乎已经对此感到困惑。有一个 JavaScript 函数 Create_Img_From_Binary 在被调用时传递一个参数,而当你对其中传递的参数值不做任何事情时,有什么意义呢?相反,您将图像源设置为 $data 那里,这是您的 PHP 变量。 【参考方案1】:

这样使用标签:

<img src="data:image/gif;base64,xxxxxxxxxxxxx...">

上面的 xxxx 是图像 base64 图像代码。

<img src="data:image/jpeg;base64, <?=base64_encode($Data)?>">

这里的 $data 是你的二进制图像

它只是解决您的问题。看看它是否有效。

【讨论】:

这行得通,但我的具体问题有点不同,我不能使用双引号,因为 javascript 已经在 php echo 函数中用双引号括起来,而单引号似乎没有工作中 这对于希望了解如何使用数据 url 在 html 中设置图像源的任何人都有好处,我意识到我所做的只是行不通,所以我稍微更改了我的代码,谢谢@Rich Php 为你高兴。很高兴为您提供帮助。

以上是关于您如何将图像标签的源设置为二进制图像数据,我所看到的没有啥对我有用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MFC 将 24 位彩色图像转换为二进制图像?

如何将二进制图像保存为任何格式到我的电脑上

如何去除opencv中的二值图像噪声?

将图像数组和标签数据帧拆分为训练、测试和验证集

如何将内存中的图像上传为 Flutter web 中 body 上的二进制图像?

如何将变量绑定到图像源字符串?