我有一个100个字符的字符串。我想为字符串的每个字符形成一个.png
图像。
这是我的代码
$grid_ch = "PKNHVJAYCLGCOLJWKRIWNYKOTICRNXUXIZUMPEFPSHAAMHFBOIMLKVIDQKSOATLLTIICYESTIEIHAASDQPLTDWHLDXSVCQRHSBOJ";
$grid_ch_arr = str_split($grid_ch);
foreach($grid_ch_arr as $k=>$v){
header("Content-Type: image/png");
$image = imagecreatetruecolor(20, 30);
$fill = imagecolorallocate($image, 255,255,255);
$text_color = imagecolorallocate($image, 0,0,0);
$border = imagecolorallocate($image, 255,255,255);
imagefilltoborder($image, 0, 0, $border, $fill);
imagestring($image, 5, 2, 2, $v, $text_color);
$image_path = "../images/" . $v . ".png";
imagepng($image,$image_path);
echo $v . ",";
}
我的问题是形成的图像是从A.png到Z.png。为什么图像被命名为英文字母而不是我的字符串中的字符。 我尝试回显脚本末尾的字符,它们工作正常。
请帮忙。
答案 0 :(得分:3)
因为像S.png这样的PNG文件不可能存在多次。 您需要一个额外的if子句,并将现有文件重命名为S_2.png或类似的东西。
另外,我不知道为什么每封信需要超过1张图像。
告诉我们你想做什么。我们可以通过这种方式帮助你。
答案 1 :(得分:0)
如果您想要名为1.png,2.png等的文件,请更改以下行:
$image_path = "../images/" . $v . ".png";
对此:
$image_path = "../images/" . $k . ".png";
如果你真的想要1到100之间的图像,而不是0到99之间的图像,也可以将$k
更改为$k+1
。
$image_path = "../images/" . $k+1 . ".png";