php混合关联数组,包含文本和图像

时间:2014-06-30 10:03:08

标签: php

你有一个关联数组包含第一个元素中的文本和第二个元素中的图像。 你会如何声明这样的数组?

我有一个函数,我想生成一段随机文本。 然后它将文本转换为图像。 我想在返回值中包含text和Image(我认为数组会很好用)。

在6个字符的随机文本字符串下面,然后通过标题发送回图像。 但我想用2元素关联数组发回。 Elm1 =>随机文字 Elm2 =>生成的图像

所以它不是图像文件,而是生成的图像。

抱歉,我是PHP新手

//Get each letter in one variable, we will format all letters different
$letter1=substr($rand_str,0,1);
$letter2=substr($rand_str,1,1);
$letter3=substr($rand_str,2,1);
$letter4=substr($rand_str,3,1);
$letter5=substr($rand_str,4,1);
$letter6=substr($rand_str,5,1);


//Creates an image from a png file. If you want to use gif or jpg images, just use the coresponding functions: imagecreatefromjpeg and imagecreatefromgif.
$image=imagecreatefrompng("./noise.png");
//$image = imagecreate(160, 45);

//Get a random angle for each letter to be rotated with.
$angle1 = rand(-20, 20);
$angle2 = rand(-20, 20);
$angle3 = rand(-20, 20);
$angle4 = rand(-20, 20);
$angle5 = rand(-20, 20);
$angle6 = rand(-20, 20);

//Get a random font. (In this examples, the fonts are located in "fonts" directory and named from 1.ttf to 10.ttf)
$font1 = rand(1, 12).".ttf";
$font2 = rand(1, 12).".ttf";
$font3 = rand(1, 12).".ttf";
$font4 = rand(1, 12).".ttf";
$font5 = rand(1, 12).".ttf";
$font6 = rand(1, 12).".ttf";

$colors[0]=array(0,0,0);
$colors[1]=array(0,0,0);
$colors[2]=array(0,0,0);
$colors[3]=array(0,0,0);
$colors[4]=array(0,0,0);
$colors[5]=array(0,0,0);
$colors[6]=array(0,0,0);



//Get a random color for each letter.
$color1=rand(0, 6);
$color2=rand(0, 6);
$color3=rand(0, 6);
$color4=rand(0, 6);
$color5=rand(0, 6);
$color6=rand(0, 6);

//Allocate colors for letters.
$bgColor = imagecolorallocate ($image, 255, 255, 255);
$textColor1 = imagecolorallocate ($image, $colors[$color1][0],$colors[$color1][1], $colors[$color1][2]);
$textColor2 = imagecolorallocate ($image, $colors[$color2][0],$colors[$color2][1], $colors[$color2][2]);
$textColor3 = imagecolorallocate ($image, $colors[$color3][0],$colors[$color3][1], $colors[$color3][2]);
$textColor4 = imagecolorallocate ($image, $colors[$color4][0],$colors[$color4][1], $colors[$color4][2]);
$textColor5 = imagecolorallocate ($image, $colors[$color5][0],$colors[$color5][1], $colors[$color5][2]);
$textColor6 = imagecolorallocate ($image, $colors[$color6][0],$colors[$color6][1], $colors[$color6][2]);

//Write text to the image using TrueType fonts.
$size = 15;

imagestring  ( $image  , rand(5,8)  , rand(5,15)  , rand(0,17)  , $letter1  , $textColor1 );
imagestring  ( $image  , rand(5,8)  , rand(30,40)  , rand(0,17)  , $letter2  , $textColor2 );
imagestring  ( $image  , rand(5,8)  , rand(55,65)  , rand(0,17)  , $letter3  , $textColor3 );
imagestring  ( $image  , rand(5,8)  , rand(80,90)  , rand(0,17)  , $letter4  , $textColor4 );
imagestring  ( $image  , rand(5,8)  , rand(105,115)  , rand(0,17)  , $letter5  , $textColor5 );
imagestring  ( $image  , rand(5,8)  , rand(130,140)  , rand(0,17)  , $letter6  , $textColor6 );

header('Content-type: image/jpeg');
//Output image to browser
imagejpeg($image);
//Destroys the image
imagedestroy($image);

我不确定为什么我会对此进行标记。

这不是 stackoverflow 用于

的内容

([经过一次自我努力] 提出问题以便从更高技能的人那里得到答案。)

然后你会得到一些在他的意见中认为这是一个愚蠢的问题,并且点击'下调。来吧管理员(降价原因)。

1 个答案:

答案 0 :(得分:0)

只需创建数组,php并不关心变量包含的类型。

而不是:

header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);

只是这样做:

$return = array(
  'text' => $rand_str,
  'image' => $image
);
return $return;

(假设您发布的代码位于函数内部。如果不了解您如何调用代码,则很难给出明确的答案)

无需将其输出到浏览器。