ImageMagick создает уникальное имя файла - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь сгенерировать изображения с помощью ImageMagick, проверьте код ниже:

<code><?
$label=$_POST["label"];
$image =$_POST["image"];
$cmd = " -background transparent label:\"$label\" -stroke red -strokewidth 0 ".
"  \( -clone 0 -tile \"" . $image . "[0]\" -stroke red -strokewidth 0 -gravity center  -annotate +0+0 \"$label\" \) ".
"  \( -clone 0 -tile \"" . $image . "[1]\" -stroke red -strokewidth 0 -gravity center -annotate +0+0 \"$label\" \) ".
"  \( -clone 0 -tile \"" . $image . "[2]\" -stroke red -strokewidth 0 -gravity center -annotate +0+0 \"$label\" \)  ".
"  \( -clone 0 -tile \"" . $image . "[3]\" -stroke red -strokewidth 0 -gravity center -annotate +0+0 \"$label\" \)  ".


 "  -delete 0 -set delay 20 -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"";?>

Приведенный выше код работает нормально, генерируя изображение с именем masked.gif, но сейчас мне нужно сделать две вещи:

  1. Созданное изображение должно иметьуникальное имя файла {каждый раз, когда он должен генерировать другое имя файла}
  2. Сгенерированное изображение должно быть сохранено в другой папке, а не в корневом каталоге, скажем, имя каталога как «coolpics»,

Пожалуйста, помогите мне исправить это. Ваш ответ приветствуется.

Ответы [ 2 ]

1 голос
/ 19 марта 2012
  1. Для уникального имени файла, проверьте функцию uniqid .
  2. Для сохранения каталога просто объедините его с именем файла, например:
// your command here

$directory = "/data/images/coolpics/"
$name = uniqid();
exec(escapeshellcmd("convert $cmd $directory$name 2>&1"), $array);

Обратите внимание, что вы передаете значения POST непосредственно системной команде, это может быть очень серьезным сбой безопасности . Используйте escapeshellcmd , чтобы убедиться, что ваша система безопасна.

0 голосов
/ 19 марта 2012

Простым решением для получения уникального имени файла является использование временной метки (например, microtime() ( ссылка на документ )).Чтобы сохранить изображение в другой папке, просто добавьте путь к параметрам exec.

Вся команда exec будет выглядеть так:

exec("convert $cmd /your/path/".str_replace(".","-",microtime(true)).".gif 2>&1", $array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...