图像旋转脚本


image rotation script

所以我有这个脚本,它可以旋转位于目录中的图像,效果很好。但是,它需要刷新页面才能旋转图像。有没有一种方法可以修改它,让它在点击图像时旋转图像?提前感谢

HTML:

<img src="rotate.php" alt="random image" />

PHP:

<?php
    $folder = 'images/';
    $exts = 'jpg jpeg png gif';
    $files = array(); $i = -1;
    if ('' == $folder) $folder = './';
    $handle = opendir($folder);
    $exts = explode(' ', $exts);
    while (false !== ($file = readdir($handle))) {
        foreach($exts as $ext) {
            if (preg_match('/'.'.$ext.'$/i', $file, $test)) {
                $files[] = $file;
                ++$i;
            }
        }
    }
    closedir($handle);
    mt_srand((double)microtime()*1000000);
    $rand = mt_rand(0, $i);
    header('Location: '.$folder.$files[$rand]);
?>

更新:这是非常基本的,但要测试一下,看看它是否有效;

 <script>
  function changeImage(o){
   o.src = 'http://www.domain.com/testtest.php?' + (new Date()).getTime(); // time to help stop caching
    }
 </script>
 <img src="http://www.domain.com/testtest.php" onclick="changeImage(this)" />

并在php中添加一个内容标头来发送图像,例如,如果它是gif或png。。。

 <?php
// see link at bottom for getting file extention
 switch ($selected_random_file_extention) {
  case "gif":
     header('Content-type: image/gif');
     $file_ext = "gif"; break;
   case "jpg":
     header('Content-type: image/jpg')
     $file_ext = "jpg"; break;
   case 3:
     header('Content-type: image/png');
     $file_ext = "png"; break;
  }
  //header('Content-type: image/gif'); // send as image 

   //$random_image_name = rand(1,5);
     // you would add $folder.$files[$rand]; and include you script above
     $random_image_name = $folder.$files[$rand]; 

                            // adjust paths as needed
       $img_file = "http://www.domain.com/".$random_image_name.".gif";
                                                               // .$file_ext;

   readfile($img_file);  // not sure how memory will go
    ?>

idear是设置header的内容类型,并使用readfile将文件读写到输出缓冲区,有了这一点,您可以使用ajax作为另一种方式来请求图像,然后使用status来轻松显示加载指示符。

如果您在哪里重写URL,您可以更改src的.php扩展名,甚至没有扩展名。

http://php.net/manual/en/function.pathinfo.php

使用pathinfo 'extension'可以获得扩展,然后设置批准Content-type

<script>
function changeSrc(element) {
  var file_names = ["image1.png", "image2.png", "image3.png"]; //etc
  var i = Math.floor(Math.random() * file_names.length);
  element.src = file_names[i];
}
</script>
<img src="image1.png" onclick="changeSrc(this)">

只需将$files连接到一个带引号的逗号分隔字符串中,并将其作为上面file_names数组的值插入即可。

您可以添加一个IFRAME,然后使用javascript,随机刷新该帧

您是否考虑过使用ajax来实现这一点?通过这种方式,您可以触发PHP,然后刷新图像,但不能刷新页面的其余部分。

如果你不想访问他的客户端,那么我会在你的IMG标签周围添加一个链接,并将你的PHP脚本分成两个文件。

<a href="rotate.php"><img src="random.php" alt="random image" /></a>

文件1(rotate.php(:旋转图像

文件2(random.php(:重定向到随机图像

header('Location: '.$folder.$files[$rand]);