我正在使用以下代码来显示图片
$imgstring = file_get_contents("https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=".$_GET['url']."&screenshot=true");
$imgstring = json_decode($imgstring);
$imgstring = $imgstring->screenshot->data;
$imgstring = str_replace("_", "/", $imgstring);
$imgstring = str_replace("-", "+", $imgstring);
header('Content-Type: image/png');
echo base64_decode($imgstring);
我想知道在页面上呈现之前是否可以缩放或更改图像的尺寸。由于Google Insight图片本身只有320x240,因此我需要将其扩展为例如600x600。
感谢您提供任何帮助/意见。
答案 0 :(得分:0)
Base64数据是二进制数据的文本表示。正如@MagnusEriksson所说,如果你想增加它的大小,你将不得不转换它。
复杂的解决方案
您可以使用imagecreatefromstring在PHP中创建图像,通过使用imagescale进行扩展,最后输出新缩放的图像。
$imgstring = file_get_contents("https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=".$_GET['url']."&screenshot=true");
$imgstring = json_decode($imgstring);
$imgstring = $imgstring->screenshot->data;
$imgstring = str_replace("_", "/", $imgstring);
$imgstring = str_replace("-", "+", $imgstring);
$im = imagecreatefromstring(base64_decode($imgstring));
$im = imagescale($im, 600);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
} else {
header('Content-Type: text/plain');
echo 'An error occurred.';
}
值得一提的是,如果你有PHP 5.5.18或更早版本的PHP版本,或PHP 5.6.2或更早版本,你需要提供imagescale的宽度和高度参数,因为宽高比计算是不正确。
此外,您的图像,当您放大(使其变大)时,与原始图像相比质量较差...原始图像中没有足够的数据来创建它的高分辨率版本
更轻松的解决方案
由于您实际上没有从增加比例中受益,如果您可以控制它的使用位置,您可以简单地将CSS样式添加到图像以增加大小。
<img src="myphp.php?url=someurl" style="width:600px;height:auto;" />
这样可以达到同样的效果,不需要任何PHP代码来改变图像。