在保持文件名相同的同时随机播放文件

时间:2017-07-03 03:41:50

标签: php image

我需要一个脚本来移动一些图像,但保留资源文件名相同。

我每五分钟使用一次从cron作业调用的PHP脚本。它有效,但不够优雅。

<?php

rename("/www/images/vvx300-background.png", "/www/images/vvx300-background-X.png");

sleep(5); //a precaution I guess

rename("/www/images/vvx300-background-B.png", "/www/images/vvx300-background.png");

sleep(5);

rename("/www/images/vvx300-background-C.png", "/www/images/vvx300-background-B.png");

sleep(5);

rename("/www/images/vvx300-background-X.png", "/www/images/vvx300-background-C.png");

?>

所以,有3张图片:
当前图像移动到X. (暂停5) 移动B以替换当前图像。 (暂停5) C重命名为B. (暂停5) X被重命名为C.

当然,这不是最好的方法....

如果你很好奇,这些是IP电话屏幕空闲图像,给用户一些变化 - 手机伸出一个固定的URL为他们的图像,因此需要保持资源文件名相同。这些文件位于Web主机上,我无法执行shell脚本。

非常欢迎您的建议。

2 个答案:

答案 0 :(得分:0)

只是为了让您了解我在评论中的意思。

$output = "/www/images/vvx300-background.png";
$files = array("/www/images/vvx300-background-A.png", "/www/images/vvx300-background-B.png", "/www/images/vvx300-background-C.png", "/www/images/vvx300-background-D.png");

Foreach($files as $file){  // or foreach(glob("/www/images/*.png") as $file){
     Copy($file, $output);
     Sleep(5);
}

这样$ output是你给手机的路径,如果你添加一个新的图像,你可以将它添加到数组中(或者可以使用glob来查找所有文件并跳过手动数组)。

请注意,这将始终为您提供一个文件的两个副本。你的原创和输出。然后每5秒更改一次输出图像。

  

编辑我现在看到你的五秒延迟不是在手机上交换图像。

     

此方法将使用当前使用的图像保存txt文件,然后转到下一个文件。

$output = "/www/images/vvx300-background.png";
$files = glob("/www/images/*.png"); 
$current = file_get_contents("current.txt"); // change path to suit. reads current image index

if(!isset($current) || $current == count($files)-1) {
     Copy($files[0], $output);
}else{
     Copy($files[$current+1], $output);
}

file_put_contents("current.txt", $current+1); // saves the index of the current image used.

第一次运行此代码时,它会生成一个警告,因为文件current.txt不存在 但是在代码结束时,它将创建文件,并且在第一次运行后所有文件都会破坏smoth。

已编辑以将方法从重命名更改为复制

答案 1 :(得分:0)

这是我最终做的,但它不符合原始问题。这就是为什么我选择了上面的答案。除了php的图像处理功能之外,我还使用了答案的方法。

这个php是图像资源,而不是静态png文件。

func numbers() -> Double  {
    while true {
        print("enter plate height:")
        if let text = readLine() {
            if let num = Double(text) {
                print("good! \(num)")
                return num
            } else {
                print("Invalid number: \(text)")
            }
        }
    }
}