Многократное уменьшение размера изображения с помощью функции php Imagemagick и filesize () - PullRequest
0 голосов
/ 24 октября 2019
$path = 'images/test.jpg';
while(filesize($path) > 500000){
    system('convert ' . $path . ' -resize 50% ' . $path);
}

У меня есть этот простой код, который использует Imagemagick для многократного уменьшения размера test.jpg вдвое, пока он не станет меньше 500 КБ. Однако этот код заставляет test.jpg бесконечно сокращаться, так как filesize($path) всегда сообщает одно и то же число, так что он постоянно попадает в цикл while. Кто-нибудь знает, почему filesize($path) сообщает одно и то же число на каждой итерации цикла, хотя изображение на самом деле сжимается каждый раз?

1 Ответ

0 голосов
/ 24 октября 2019

filesize($path) возвращает один и тот же результат на каждой итерации, поскольку его результаты кэшируются, поскольку в руководстве говорится:

Примечание. Результаты этой функции кэшируются. См. Clearstatcache () для получения более подробной информации.

И, как говорится в руководстве, вы должны вызвать clearstatcache () , чтобы очистить этот кэш, чтобы вы получили реальный размерфайл после изменения его с помощью Imagemagick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...