php – 内联生成的图像超过长度

我正在使用PHP生成图像,这很好用.但是我无法显示这些图像:

我的图像生成器是一个PHP文件,它需要大量的参数和数据加载来生成图像.由于必须传递给生成器的数量过多,使用GET容器对我来说不起作用,因此数据通过POST请求发送.该请求的结果是原始图像数据.

我在用

$result = post_request('http://myurl.com/graphx/generator.PHP', $data);
if($result['status'] == 'ok') {
    echo "<img src=\"data:image/png;base64,".
        base64_encode($result['content'])."\"/>\n";
}

显示我的图像.这适用于非常小的图像,但随着它们变大(例如300px * 300px),图像不再显示(它似乎在某处被切割).

我的方法合理吗?

是否有针对尺寸问题的解决方法

更新:

当我让生成器将图像保存到文件时,创建的文件包含我想要的图像.此外,如果将我的生成器转换为GET生成器,以下代码也可以正常工作:

$data = http_build_query($data);
echo "<img src=\"http://myurl.com/graphx/get_generator.PHP?{$data}\"/>\n";

所以它肯定是POST请求或转换为base64格式的问题.我正在使用POST请求,如here所示.

解决方法:

我建议你的网页结构如下:

主页:

<img src="imageproxy.PHP" />

imageproxy.PHP

<?PHP
$result = post_request('http://myurl.com/graphx/generator.PHP', $data);
header('Content-type: image/png');
if($result['status'] == 'ok') {
    echo $result['content']);
} else {
    readfile('error_message_image.png');
}

而不是尝试使用数据uris和长度限制,只需让您的代理脚本输出实际的原始图像数据,并将其作为客户端html中的图像处理.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...