0

我有一个 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。为什么图像被命名为他的英文字母而不是我的字符串中的字符。我尝试在脚本末尾回显字符,它们工作正常。

请帮忙。

4

2 回答 2

3

因为像 S.png 这样的 PNG 文件不可能多次存在。您需要一个额外的 if 子句并将始终存在的文件重命名为 S_2.png 或类似的东西。

另外我不知道为什么每个字母需要超过 1 个图像。

告诉我们你想做什么。我们可以通过这种方式更好地帮助您。

于 2013-10-06T19:24:46.157 回答
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";
于 2013-10-06T21:16:24.573 回答