【问题标题】:Use PHP to "parse" image with response header "content-type: image/jpeg"使用 PHP 来“解析”带有响应头“content-type: image/jpeg”的图像
【发布时间】:2019-05-22 16:40:07
【问题描述】:

我正在从 graph.facebook.com 请求一张图片

响应头使用“content-type: image/jpeg”并提示我下载而不是在浏览器中显示。

有没有办法(使用 PHP)“拦截”下载并将其转换为图像格式?

干杯。

更新:

这种作品。它将图像返回给浏览器(在 Chrome 的网络选项卡中可见),但我不确定如何在 <img> 标记中显示它:

<?php
$data = file_get_contents("https://www.petmd.com/sites/default/files/what-does-it-mean-when-cat-wags-tail.jpg");

// $data = base64_decode($data);

$im = imagecreatefromstring($data);

if ($im !== false) {
    header('Content-Type: image/png');
    $qwe = imagepng($im);
    imagedestroy($im);
    return $qwe;
}
else {
    echo 'An error occurred.';
}
?>

【问题讨论】:

  • 您正在下载 JPEG,但显示为 PNG?
  • @Raptor 那是“演示”代码。真正的(秘密)URL 是一个 .png ;)

标签: php image download


【解决方案1】:

您的代码无效。您不要从非函数中使用return,因为它没有任何意义。如果你的情况需要更换

return $qwe;

简单的

echo $qwe;

我也会立即关注 die(); 并删除关闭 ?&gt;。这应该是让它工作所需要的一切。

不确定获取 JPEG 文件但输出 PNG 的想法有什么意义。除了浪费时间和资源之外,您一无所获,因此整个转换代码毫无用处,与您刚刚下载的内容相呼应就足够了:

header('Content-Type: image/jpeg');
$data = file_get_contents(".....");
if ($data !== false) {
    echo $data;
}
die();

PS:作为家庭作业,摆脱使用file_get_contets() 进行网络访问并使用cURL,尤其是。可以禁用以前使用的网络包装器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 2021-11-08
    • 2022-06-30
    • 1970-01-01
    • 2023-03-10
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多