Сначала проверьте, имеет ли HTML-тег изображения атрибут ширины.Если это выше 40, пропустите это.Как упоминал Мэтью, он получит ложные срабатывания, когда люди уменьшат изображение до 40px в ширину, но это не так уж и важно;смысл этого шага в том, чтобы быстро отсеять первые дюжину или около того изображений, которые, очевидно, слишком велики.
Как только скрипт поймает изображение, которое говорит, что его ширина менее 40px, проверьте информацию заголовка, чтобы определить общую ширинув зависимости от размера файла.Это быстрее, чем getimagesize, потому что вам не нужно загружать изображение, чтобы получить информацию.
function get_image_kb($path) {
$headers = get_headers($path);
$len = explode(" ",$headers[6]);
return $len[1];
}
$imageKb = get_image_kb('test1.jpg');
// I'm going to gander 40x80 is about 2000kb
$cutoffSize = 2000;
if ($imageKb < $cutoffSize) {
// this is the one!
}
else {
// it was a phoney, keep scraping
}
Установка его в 2000kb также пропустит изображения размером 100x30, что не хорошо.
Однако на данный момент вы отсеяли большую часть огромных 800-килобайтных файлов, которые действительно замедлили бы вас, и, поскольку мы знаем, что они меньше 2 КБ, проверять их с помощью getimagesize () не слишком сложно, чтобы получитьточная ширина.
Вы можете настроить процесс в зависимости от того, насколько разборчивы вы для отметки 40px, так как обычно более высокая точность требует больше времени, и наоборот.