ImageMagick, создание нового имени файла изображения - PullRequest
0 голосов
/ 09 января 2012

Пожалуйста, найдите код ниже, который создает изображение с именем файла "masked.gif" в каталоге по умолчанию.

<code>$size=$_POST["size"];
$label=$_POST["label"];
$font=$_POST["font"];

 $cmd = " -background transparent -font $font -pointsize $size label:$label -stroke          black -strokewidth 2 ".
"  \( -clone 0 -tile \"animated_water.gif[0]\" -stroke black -strokewidth 2 -gravity      center -annotate +0+0 $label \) ".
"  \( -clone 0 -tile \"animated_water.gif[1]\" -stroke black -strokewidth 2 -gravity    center -annotate +0+0 $label \) ".
"  -delete 0 -set delay 15 -loop 0 -trim +repage -layers Optimize ";
$array=array();
echo "<pre>";
exec("convert $cmd masked.gif 2>&1", $array);
echo "<br>".print_r($array)."<br>";
echo "
"; echo "image";

Мне нужен каталог "images", который будет использоваться как каталог по умолчанию. Каждый раз это создает новый образ. Мне нужно создать новое имя файла top для каждого изображения, сгенерированного в конце. «masked.gif» не следует заменять новым изображением, созданным после этого.

Я предпочитаю имя файла последовательных изображений, похожее на «image1.gif», после этого «images2.gif».

Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 10 января 2012

Вы можете использовать эту функцию для имени файла и проблемы dir:

function getNewFilename($dir = 'images/')
{
    $count = 0;
    if($handle = opendir($dir))
    {
        while (false !== ($file = readdir($handle)))
        {
            if ($file != "." && $file != "..")
            {
                $tmp = explode("_",$file); // get the number and extension
                $tmp2 = explode(".",$tmp[1]); //get only the number
                if($tmp2[0] > $count) $count = $tmp2[0]; //set the number to the count if it is higher thand the last recorded value
            }
        }
        closedir($handle);
    }

    return $dir."masked_".$count.".gif";    
}

exec("convert $cmd ".getNewFilename()." 2>&1", $array);

Но это может быть очень медленным, если у вас огромное количество файлов.Вместо этого вы должны использовать что-то вроде этого:

function getNewFilename($dir = 'images/')
{
    return $dir."masked_".time().".gif";
}

Здесь вы получаете уникальное имя файла, и они упорядочены при создании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...