php - 在 html<img> 标签中显示来自 curl 请求的图像

标签 php html curl php-curl

我正在处理的网站的其中一个页面应该显示有关漫画的信息,例如它的封面图片。

我正在尝试显示通过发出 curl 请求获得的图像。

<?php
    if(isset($_GET['info'])) {
        $postedData = $_GET["info"]; //json object containing info about manga such as author/title etc.
        $info = json_decode($postedData, true);
        $mangacoverid = $info['im']; //id of the cover image that i'm getting from json object

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://cdn.mangaeden.com/mangasimg/" . $mangacoverid); //link of API i'm using and adding cover id to it
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        $picture = curl_exec($ch);
        curl_close($ch);
        header('Content-type: image/jpeg');
        echo $picture; //displays image in browser
    }
        ?>

-一些用于测试目的的“mangacoverid”: ff/ff94bb880357b6b811bccbbfd3356c5ec41fbb184291323f0ed6a86a.jpg c1/c1b0173d8986681f23ecf5a69d26aa9dab4a04db4d40f99bed539198.jpg 0c/0cf6ebf78074e748ab2aeea3a0fcb9e0dd43040974c66e24fa46703f.jpg 5d/5dcfed2e033c2da62e7ac89367533ebbc344373c46a005e274a16785.png 18/18b1f0b13bccb594c6daf296c1f9b6dbd83783bb5ae63fe1716c9091.jpg 35/35bf6095212da882f5d2122fd547800ed993c58956ec39b5a2d52ad4.jpg

-虽然我能够在页面中显示图像,但整个页面背景变成黑色,图像位于页面中间。 (即 style="margin: 0px; background: #0e0e0e;>")。

我想做的是将图像插入 HTML 标记中,这样我就可以将它放在页面的其他位置。

我尝试将带有“mangacoverid”附加到它的普通 cdn 链接放在一个标签中,但图像提供商不允许热链接,它会抛出 403 错误。

非常感谢任何帮助!

最佳答案

我测试了你的代码,当封面 ID 被硬编码时,它似乎工作正常。 问题可能是通过查询参数传递的 JSON 没有得到正确解析(由于 URL 编码)?

硬编码的封面 ID 是否适合您?

文件 image.php

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, sprintf('https://cdn.mangaeden.com/mangasimg/%s', $_GET['id']));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$picture = curl_exec($ch);
curl_close($ch);
header('Content-type: image/jpeg');
echo $picture;

在生成显示图像的页面的脚本中:

// Assuming $info holds the decoded json for the manga
echo(sprintf('<img src="image.php?id=%s>', $info['im']);

关于php - 在 html<img> 标签中显示来自 curl 请求的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57103440/

相关文章:

Javascript 函数在 PHP 中的第一个 while 循环后停止

javascript - 发送邮件时$_POST有时为空

javascript - Jquery Ajax Post 中的 CORS 问题

PHP:将代码的逻辑更改为切换图像

php - 如何允许 require_once() 到 wordpress 中的 php 文件

html - <a href> 破坏文本格式

javascript - 如何在 HTML 网站中显示 HTML 源代码?

php - 服务器是否可以专门阻止 curl 请求?

curl - 有什么方法可以使用curl查询多个文档以从_source提取字段值的elasticsearch吗?

bash - 如何在没有临时文件的情况下使管道中的程序在第一个数据到达之前不执行?