如何在PHP中显示一个目录中的图片

874 阅读2分钟

在本教程中,我们将通过以下的基础知识来了解 如何在PHP中显示一个文件夹中的图片.这将通过查看一些你可以用来做的代码来完成。

有时,直接从一个目录中显示图片要比 从数据库中显示图片.如果你想学习如何直接从一个文件夹中显示图像文件,请查看下面的步骤。

如何从一个目录中获取图像并显示它们?

这里我们有一个目录叫 图像的目录,我们想在我们的网站上显示其中的所有图片。因此,这里有以下代码:

<?php

	//get current directory
	$working_dir = getcwd();
	
	//get image directory
	$img_dir = $working_dir . "/images/";
	
	//change current directory to image directory
	chdir($img_dir);
	
	//using glob() function get images 
	$files = glob("*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}", GLOB_BRACE );
	
	//again change the directory to working directory
	chdir($working_dir);

	//iterate over image files
	foreach ($files as $file) {
	?>
		<img src="<?php echo "images/" . $file ?>" style="height: 200px; width: 200px;"/>
	<?php }
?>

输出

PHP函数glob() 是用来检索与指定模式相匹配的文件或目录的列表。

在上面的代码中,我使用了一个模式*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF} 。这是因为经常看到图片的扩展名有时是大写的,有时是小写的。所以我们在这里的模式中使用了小写和大写的扩展名。

这里我使用getcwd() 函数来获取PHP中的当前目录chdir 函数将改变工作目录为图像目录。

如何从一个文件夹中获取所有的图片,并在一个表格中显示带有名称的图片?

有时,你想从一个文件夹中获取所有的图像(也许还有其他文件)。之后,你想在一个表格中显示带有名称的图片。所以下面的代码是这样的。

<?php

	//get current directory
	$working_dir = getcwd();
	
	//get image directory
	$img_dir = $working_dir . "/images/";
	
	//change current directory to image directory
	chdir($img_dir);
	
	//using glob() function get images 
	$files = glob("*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}", GLOB_BRACE );
	
	
	//again change the directory to working directory
	chdir($working_dir);
	?>
	<table width="100%" border="1px">
		<tr>
			<th>S/N</th>
			<th>Image Preview</th>
			<th>Image Name</th>
		</tr>
	
	<?php
	$c = 1;
	//iterate over image files
	foreach ($files as $file) {
	?>
		<tr align="center">
			<td><?php echo $c;?></td>
			<td><img src="<?php echo "images/" . $file ?>" style="height: 100px; width: 100px;"/></td>
			<td><?php echo $file ?></td>
		</tr>
	<?php $c++; } ?>
	</table>

输出

显示一个文件夹中的随机图片

这是一篇关于在PHP中随机显示文件夹中的图片的基本 "方法 "文章。有些网站需要这个功能,因为他们有很多种类的图片和众多的类别,这使得他们很难管理他们的图片;因此,他们需要随机地列出网站上的照片。

PHP的shuffle() 函数对一个数组的元素进行随机排序,以得到一个随机的集合。正如API文档所说,它只是 "给定一个现有的排列组合,生成一个随机排列组合的好方法"。

<?php

	//get current directory
	$working_dir = getcwd();
	
	//get image directory
	$img_dir = $working_dir . "/images/";
	
	//change current directory to image directory
	chdir($img_dir);
	
	//using glob() function get images 
	$files = glob("*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}", GLOB_BRACE );
	
	//shuffle the array element
	shuffle($files);
	
	//again change the directory to working directory
	chdir($working_dir);
	
	//iterate over image files
	foreach ($files as $file) {
	?>
		<img src="<?php echo "images/" . $file ?>" style="height: 100px; width: 100px;"/>
	<?php } ?>
	

	

输出

列出目录和子目录中的所有图像文件

你为什么要这样做呢?一个可能的用例是,你有一个图片库网站,有非常多的图片。你需要备份网站的内容,包括所有的图片,但又不想下载数以百万计的文件,或建立一个数据库,从中导出缩略图,然后再重新上传。

为了使这个可能的解决方案奏效,你的服务器必须能够运行PHP。此外,你应该有对包含照片本身的文件夹的写入权限(即完全权限)。

那么,让我们开始吧。我们开始我们的任务清单,在给定的目录中递归地循环浏览子文件夹中的所有图片。

<?php
 
//get all images from directory and sub directory
function getImg($pattern, $flags = 0) {
    $files = glob($pattern, $flags); 
    
	foreach( glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir ) {
        $files = array_merge($files, getImg($dir.'/'.basename($pattern), $flags));
    }
    return $files;
}

//to find the all images
$result = getImg('*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}', GLOB_BRACE);
var_dump($result);

?>

输出

结论

在这篇博文中,我们已经介绍了以下的基础知识如何在PHP中显示一个文件夹中的图片.你现在应该已经掌握了足够的信息,可以在没有太多困难的情况下开始你自己的项目了。如果你在学习本教程时有任何问题,请随时与我们联系或在下面评论。