使用Imagemagick和filesize()php函数反复减小图像大小

使用Imagemagick和filesize()php函数反复减小图像大小,php,imagemagick,Php,Imagemagick,我有一个简单的代码,它使用Imagemagick反复将test.jpg的大小减少一半,直到小于500KB。但是,由于filesize($path)总是报告相同的数字,因此这段代码导致test.jpg无限期地收缩,因此它将永远陷入while循环。有人知道为什么filesize($path)在循环的每次迭代中报告相同的数字,即使图像实际上每次都在缩小吗?filesize($path)在每次迭代中返回相同的结果,因为其结果是缓存的,如下所示: 注意:此函数的结果将被缓存。有关详细信息,请参阅clear

我有一个简单的代码,它使用Imagemagick反复将
test.jpg
的大小减少一半,直到小于500KB。但是,由于
filesize($path)
总是报告相同的数字,因此这段代码导致test.jpg无限期地收缩,因此它将永远陷入while循环。有人知道为什么
filesize($path)
在循环的每次迭代中报告相同的数字,即使图像实际上每次都在缩小吗?

filesize($path)
在每次迭代中返回相同的结果,因为其结果是缓存的,如下所示:

注意:此函数的结果将被缓存。有关详细信息,请参阅clearstatcache()


而且,如手册所述,您应该调用以清除该缓存,以便在使用Imagemagick修改文件后获得该文件的实际大小。

因为您已经定义了该文件,而没有使用其中的值更新它。。您只是缩小了图像,但没有再次检查文件大小($path)。还有
system('convert'.$path.-resize 50%。$path)系统函数需要第二个参数,但您只发送一个参数。请尝试
@exec($path.-resize 50%,$output,1)这里是完整的描述,这可能会帮助您解决问题
$path = 'images/test.jpg';
while(filesize($path) > 500000){
    system('convert ' . $path . ' -resize 50% ' . $path);
}