I am trying to generate images using ImageMagick, please check the code below:
<?
$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 "</pre>";
echo "<img src='masked.gif'>";
?>
Above code works fine by generating an image named as masked.gif, but I need to do two things now:
- Generated image should have a unique filename{every time it should generate different file name}
- Generated image should be saved in different folder not the root directory, let’s say the directory name as “coolpics” ,
Please help me to fix this. Your response is appreciated.
// your command here $directory = "/data/images/coolpics/" $name = uniqid(); exec(escapeshellcmd("convert $cmd $directory$name 2>&1"), $array);Note that you’re passing POST values directly to a system command, this can be a very serious security fail. Use escapeshellcmd to make sure your system is safe.