2017-10-13 63 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

非常感謝 –