png图像按字母顺序自动命名

时间:2013-10-06 19:13:35

标签: php image

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

请帮忙。

2 个答案:

答案 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";