我有一个名为MakeAvatar.php
的脚本,它根据两个参数生成一个头像(类似于stackoverflow的头像):
Aslo我有这个文件夹结构:
\out
MakeAvatar.php
\root
\classes
classname.php
\img
/* where images (avatars) are saved */
现在,有两种情况:
MakeAvatar.php
功能时它也可以正常工作,输出将是一个保存为.png
图片的头像:classname.php
// these two parameters are changeable and these are just as an example
$size = 100;
$hash = 'somettext';
require("../out/MakeAvatar.php");
输出:
MakeAvatar.php
用于函数时它不起作用,输出将是一个黑色图像(对于每个将要发送的参数都是相同的)classname.php
class classname{
function index() {
// these two parameters are changeable and these are just as an example
$size = 100;
$hash = 'somettext';
require("../out/MakeAvatar.php");
}
}
$obj = new classname;
$obj->index();
输出:
它出了什么问题?我该如何解决?为什么当我将MakeAvatar.php
变形为函数时,id不能创建正确的头像?
当我将MakeAvatar.php
置于函数中时,我得到the errors。
答案 0 :(得分:1)
我已检查MakeAvatar.php
文件的代码,似乎问题出现在以下代码中
/* generate sprite for corners and sides */
function getsprite($shape,$R,$G,$B,$rotation) {
global $spriteZ;
变量$spriteZ
在文件的第327行中定义。但是当你在函数中包含文件时,这个变量是而不是创建为全局变量,但这是一个函数内部的变量。查看variable scope手册。
这意味着在getsprite)
函数内部,变量$spriteZ
具有null
值,因为当文件包含在函数内部时,没有这样的全局变量$spriteZ
(它是未初始化为全局变量)。这就是函数imagecreatetruecolor()
的调用因错误
警告:imagecreatetruecolor():中的图片尺寸无效 第7行的C:\ xampp \ htdocs \ inaccessible \ identicon.php
我建议修改getsprite()
和getcenter()
函数,并将此变量作为参数提供。导致全局变量可能非常混乱。
P.S。代码架构一般不是最优的,但我想这不属于问题的范围。