这是我如何保存图像并为其创建缩略图,每个图像可能有不同尺寸的不同缩略图
original image :
abc.jpg
thumbnails :
100X150_abc.jpg
80X80_abc.jpg
etc...
现在我犯了一个错误,我的几百张图片已保存在错误的目录中 我知道原始图像的名称,但我不确定缩略图
我的所有图片都有一个唯一的名称,因此我可以使用其名称识别缩略图,但缩略图中名称的开头部分是动态的。
假设我想从06
目录中的07
目录复制我的abc.jpg
rename('images/06/abc.jpg', 'images/07/abc.jpg');
但是我可以对缩略图做些什么呢?有这样的正则表达式吗?
喜欢!rename('thumbs/06/^_abc.jpg', 'thumbs/07/^_abc.jpg');
基本上我想将所有以特定名称(如_abc.jpg
)结尾的图像复制到另一个目录
答案 0 :(得分:3)
glob()
函数支持*
作为通配符(但没有完整的正则表达式支持)。它返回一组匹配的文件名:
$from = '/absolute/path/thumbs/06/';
$to = '/absolute/path/thumbs/07/';
chdir($from); // in this way glob() can give us just the file names
foreach(glob('*_abc.jpg') as $name) {
rename($from.$name, $to.$name);
}
glob()
函数不是很清楚,但在这种情况下非常方便,因为其他PHP文件函数不支持通配符之类的东西。
答案 1 :(得分:1)
以下是应该有效的代码:
<?php
$olddir = "./images/06/";
$newdir = "./images/07/";
$files = scandir($olddir);
$count = count($files);
echo $count;
$x = 2;
while($x < $count)
{
echo $files[$x];
$len = strlen($files[$x]);
$sub = substr($files[$x], $len-7, 7);
if($sub === "abc.jpg")
{
rename($olddir.$files[$x],$newdir.$files[$x]);
}
$x++;
}
?>
这会将06文件夹中以abc.jpg结尾的所有文件移动到07文件夹。
如果它不起作用,请告诉我.... :)
答案 2 :(得分:0)
如果您希望所有以abc开头的文件都使用rename('images/06/*abc.jpg', 'images/07/*abc.jpg');
rename('images/06/*_abc.jpg', 'images/07/*_abc.jpg');
,如果您只想缩略图:abc*.jpg
btw