我需要在SSL连接上读取图像(基于HTTP)。该脚本读取图像位置并对其进行编码/解码,然后传输文件内容并返回图像。但是,我不断收到错误cannot be displayed because it contains errors
。
这是我的代码:
<?php
$image = 'http://www.teleovronnaz.ch/webcam/ovronnazweb.jpg';
$info = getimagesize($image);
$strFileExt = image_type_to_extension($info[2]);
if($strFileExt == '.jpg' or $strFileExt == '.jpeg'){
header('Content-Type: image/jpeg');
}elseif($strFileExt == '.png'){
header('Content-Type: image/png');
}elseif($strFileExt == '.gif'){
header('Content-Type: image/gif');
}else{
die('not supported');
}
if($strFile != ''){
$cache_ends = 60*60*24*365;
header("Pragma: public");
header("Cache-Control: maxage=". $cache_ends);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $cache_ends).' GMT');
$img_safe = file_get_contents($strFile);
echo $img_safe;
}
exit;
?>
答案 0 :(得分:1)
这对我有用。
<?php
$url = 'http://www.teleovronnaz.ch/webcam/ovronnazweb.jpg';
header('Content-type: image/jpeg');
readfile($url);
?>
答案 1 :(得分:0)
我不知道你为什么这么复杂。我只是剥离了您的缓存处理,但是
<?PHP
$image = 'http://www.teleovronnaz.ch/webcam/ovronnazweb.jpg';
$imageContent = file_get_contents($image);
header("Content-Type: image/jpeg");
echo $imageContent;
die(1);
?>
足以显示图像。不需要base64
或其他东西。如果url是静态的,则您甚至不需要区分文件扩展名。您说的是图片-单数。所以我猜这是这里唯一的用例。
我只是花了一些时间来解释一些事情:
通过SSL连接读取图像(基于HTTP)
如果为HTTP
,则表示没有SSL 。这就是HTTPS
的目的。
此脚本读取图像位置并对其进行编码/解码,
我不知道您的想法,但事实并非如此。 URL是通过base64_encoding直接将其再次解码为另一个变量。就像执行以下操作:0
是您的$image
-然后您制作$image+1
(base64_encode
)-这将导致1
-然后您进行{{ 1}}($image-1
),将再次导致base64_decode
。