2017-10-13 65 views
2

的图像生成细跟下面的代码如何使用随机名称生成使用ffmpeg-php生成的图像文件?

$thumbnail = 'images/thumbnail.jpg'; 

// shell command [highly simplified, please don't run it plain on your script!] 

shell_exec("ffmpeg -i $video -deinterlace -an -ss 1 -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $thumbnail 2>&1"); 

但它创建了一个名为thumbnail.jpg 我需要有随机名称生成将其保存在图片文件夹和数据库图像文件。我怎么能生成一个随机名称在下面的代码 $thumbnail = 'images/thumbnail.jpg';

+1

这个“随机名称”的要求是什么?如果你的意思是你想要像thumbnail1.jpg那么你可以很容易地查询你正在存储JPG格式的表的行数,并添加一个到该格式并将其附加到文件名的末尾。 –

+0

@MichaelPlatt我需要添加当前时间,随机数和应该看起来像。这,$ thumbnail ='images/thumbnail + currentTime + randomnumber.jpg'..我是一个初学者..所以请帮忙 –

+0

那么你如何使另一个变量,称之为'$ thumbnail_output',并设置值成为'缩略图'。创建另一个名为date的变量,例如'$ date = date('m/d/Y h:i:s a',time());'并将两者粘在一起作为输出文件名? –

回答

0

缩略图尝试以下操作:

$rand = rand(1,10000); 
$uniqueName = uniqid($rand); 
$thumbnail = "images/{$uniqueName}.jpg"; 

它将为缩略图创建一个唯一的名称。使用uniqid()rand()

+0

https://stackoverflow.com/questions/4070110/how-unique-is-uniqid – rak007

+0

@ rak007正如答案所说,它不足以用于安全令牌。但情况并非如此。由于OP只想使用随机字符串作为文件名,它可以做得很好,尤其是当提供一个前缀' – mega6382

+1

@ mega6382感谢您的答案,帮了我很多 –

0

更改的行

$thumbnail = 'images/thumbnail.jpg'; 

$thumbnail = 'images/img'.rand(99,999999).'.jpg'; 

这将创建图像的随机名称。

+0

如果我想保存1000000图像怎么办? – rak007

+1

将rand(99,999999)更改为rand(99,999999999)。 :) –

+0

在100万张图片上,仍然有很大的机会遇到相同的兰特数字两次... – rak007

0

Random将永远不会授予以这种方式生成的每个文件名都是唯一的并且尚未被使用。

我建议使用tempnam

下面是一个例子:

$tmpfname = tempnam("/YOURDIR", "images"); 
+0

感谢您的帮助 –

0

既然你在你的评论,你需要你的文件名看起来像

$thumbnail = 'images/thumbnail+currentTime+randomnumber.jpg' 

这里说是代码做只是:

$thumbnail = 'images/thumbnail' . time() . rand(1,9) . '.jpg'; 

我建议您编辑您的文章并粘贴这些要求,以便其他用户可以轻松找到它们。

+0

非常感谢 –