我想从目录中随机加载图像,并在某处有一个刷新整个页面的按钮。这是我现在拥有的当前代码:
<?php
$a = array();
$dir = '../public/wp-content/uploads/2012/01';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (preg_match("/\.png$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpg$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpeg$/", $file)) $a[] = $file;
}
closedir($handle);
}
foreach ($a as $i) {
echo "<img src='" . $dir . '/' . $i . "' />";
}
?>
问题在于它一次加载了所有40万张图像。我只想加载30个。目录中的30张随机图像。我尝试查找一些代码,例如将上面的内容修改为:
<?php
$a = array();
$dir = '../public/wp-content/uploads/2012/01';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (preg_match("/\.png$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpg$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpeg$/", $file)) $a[] = $file;
}
closedir($handle);
}
foreach ($a as $i) {
echo "<img src='" . $dir . '/' . $i . "' />";
if (++$i == 2) break;
}
?>
但是,它似乎绝对没有任何作用。因此,如果有人可以帮助我从该目录中获取30张随机照片进行加载,并具有某种类型的重新加载按钮,那将是非常有用的。
先感谢您
这是我的缓存解决方案:
<?php
define('CACHE_FILE', 'mycache.tmp');
define('CACHE_TIME', 20); // 20 seconds (for testing!)
define('IMG_COUNT', 30);
define('IMG_DIR', '../public/wp-content/uploads/2012/01');
/**
* Loads the list (an array) from the cache
* Returns FALSE if the file couldn't be opened or the cache was expired, otherwise the list (as an array) will be returned.
*/
function LoadListFromCache($cacheFile, $cacheTime)
{
if ( file_exists($cacheFile) )
{
$fileHandle = fopen($cacheFile, 'r');
if ( !$fileHandle )
return false;
// Read timestamp (separated by "\n" from the content)
$timestamp = intval( fgets($fileHandle) );
fclose($fileHandle);
// Expired?
if ( $timestamp+$cacheTime > time() )
return false;
else
{
// Unserialize the content!
$content = file_get_contents($cacheFile);
$content = substr( $content, strpos($content, "\n") );
$list = unserialize($content);
return $list;
}
}
return false;
}
/**
* Caches the passed array
* Returns FALSE if the file couldn't be opened, otherwise TRUE.
*/
function SaveListToCache($cacheFile, $list)
{
$fileHandle = fopen($cacheFile, 'w');
if ( $fileHandle === FALSE ) return false;
fwrite($fileHandle, time());
fwrite($fileHandle, "\n");
fwrite($fileHandle, serialize($list));
fclose($fileHandle);
return true;
}
/**
* Generates the list of all image files (png, jpg, jpeg) and caches it.
* Returns the list as an array.
*/
function GenerateList()
{
$a = array();
$dir = IMG_DIR;
if ($handle = opendir($dir))
{
while (false !== ($file = readdir($handle)))
{
if (preg_match("/\.png$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpg$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpeg$/", $file)) $a[] = $file;
}
closedir($handle);
}
SaveListToCache(CACHE_FILE, $a);
return $a;
}
function GetRandomImages($list, $count)
{
$listCount = count($list);
$randomEntries = array();
for ($i=0; $i<$count; $i++)
{
$randomEntries[] = $list[ rand(0, $listCount) ];
}
return $randomEntries;
}
// This code will execute the other functions!
$list = LoadListFromCache(CACHE_FILE, CACHE_TIME);
if ( $list === FALSE )
{
$list = GenerateList();
}
$images = GetRandomImages($list, IMG_COUNT);
foreach ($images as $image)
{
echo '<img src="', IMG_DIR.DIRECTORY_SEPARATOR.$image, '" />';
}
我尝试从数组中随机加载gif。我尝试了几种方法,但都没有奏效。我要么收到错误消息,要么图像就不会出现。 版本 1(结果:图像未显示): 版本2(结果:“无效调用”) 版本3(结果:无法加载图像): 有什么想法吗?
问题内容: 我正在尝试建立一个用户可以提交照片的网站,然后在另一个页面上一个一个地随机查看其他照片。我有一个名为“上传”的目录,其中提交了图片。我无法从文件中读取图片。我只想从目录上传中随机选择一张图片,并将其显示在页面上。任何建议表示赞赏。 问题答案: 您可以使用glob获取目录中的所有文件,然后从该数组中获取随机元素。这样的函数将为您完成此任务:
挂载主机目录 挂载一个主机目录作为数据卷 使用 --mount 标记可以指定挂载一个本地主机的目录到容器中去。 $ docker run -d -P \ --name web \ # -v /src/webapp:/opt/webapp \ --mount type=bind,source=/src/webapp,target=/opt/webapp \ training/
我的JavaFX项目可以在一台机器中加载图像,但是相同的代码不能在另一台机器中加载图像。 我有包结构(在src中)-/com/mypackagestructure/view/images/,它保存图像文件。 我的CSS文件位于-/com/mypackagestructure/view/Login。css 我在另一台机器上有完全相同的代码(安装了相同的操作系统、相同的Eclipse IDE和JDK/
我有以下目录结构: b、 py需要在a.py中导入一个类。因此,我可以在导入a之前将以下行添加到b.py。 sys.path.append(os.path.dirname(sys.argv[0])) 这是可行的,我可以从任何目录调用b.py,它也可以导入a。但是,当我在另一个目录中编写脚本以使用execfile()调用此文件时,这将失败。 我尝试了相对导入,但得到了“在非包错误中尝试相对导入” 我
问题内容: 从Python目录中选择随机文件的最佳方法是什么? 编辑: 这是我在做什么: 这是特别糟糕,还是有一种更好的方法? 问题答案: 关于您编辑过的问题:首先,我假设您知道使用a的风险,以及从2.6开始不推荐使用并在3.0中删除的事实。 第二,我看不到这里存在任何比赛条件。您的对象基本上是不可变的(在缓存目录列表之后,再也不会读取它),因此并发读取它不会造成任何危害。 除此之外,我不明白为什