下面是我正在处理的文件迭代,它迭代文件夹并收集所有图像,它将每个图像的文件路径保存到$files array
,然后代码必须迭代{{1} }
现在我正在处理的代码实际上通过imagemagick感知了一个文件3次(我没有写原始代码)所以我正在尝试改进整个代码,到目前为止我已经将其减少到2倍完成后,每张图片只有1次。
基本上当前的代码通过imagemagick运行一个图像,看它是不是图像,稍后它会再次执行,但这次是为了获得图像扩展,然后第3次是确保它是图像再次(我知道人们编写的代码非常糟糕)
所以要将它减少到1次,当$files array
第一次通过imagemagick运行图像文件以确保它是图像时,我现在有了该函数返回文件扩展名而不是简单的真/假。因此,当文件路径保存到数组时,我想将返回的文件扩展名保存到具有该特定文件路径的数组中,以便稍后可以访问它而无需再次运行imagemagick。
所以这里是循环文件夹抓取所有图像文件然后将它们发送到imagemagick的功能。然后它将文件路径保存到数组,有人可以告诉我如何将文件扩展名保存到此数组,然后如何在函数下面的代码中访问它
$files array
然后我就这样访问这个数组......
function find_recursive_images($path)
{
$directory = new RecursiveDirectoryIterator($path,RecursiveDirectoryIterator::SKIP_DOTS);
$iterator = new RecursiveIteratorIterator($directory,RecursiveIteratorIterator::LEAVES_ONLY);
$exntensions = array("png", "jpg", "jpeg", "gif", "bmp");
foreach ($iterator as $fileinfo) {
if (in_array($fileinfo->getExtension(), $exntensions)) {
//This gets the filetype of the image from ImageMagick
$img = self::get_type($fileinfo->getPathname());
if ($img) {
//This sets the full file path to the $files array
$files[] = $fileinfo->getPathname();
// I tried something like this but not correct
$files[][] = $img;
}
}
}
return $files;
}
答案 0 :(得分:1)
你如何为每个图像使用关联数组?试试这个:
要构建您的数组:
$files[] = array(location => $fileinfo->getPathname(), type => $img);
循环你的aray:
foreach ($files as $file) {
$source_file = $file->location;
$extension = $file->type;
//do some stuff using your info
}