«Уменьшить фото» — это две разные задачи
Просьба уменьшить фотографию означает одно из двух, и путаница между ними — причина большинства неудачных попыток.
Первое — уменьшить вес файла: снимок весит 8 МБ, а форма принимает 2. Здесь нужно сжатие: количество пикселей остаётся прежним, меняется только количество данных на них.
Второе — уменьшить размер в пикселях: снимок 4000×3000, а нужен аватар 400×400. Здесь нужно изменение размера, и вес уменьшится заодно, причём гораздо сильнее.
Если требование сформулировано в мегабайтах — сжатие. Если в пикселях — изменение размера. Если и то и другое — сначала размер, потом сжатие: порядок важен, потому что сжимать 12 мегапикселей ради аватара бессмысленно.
Почему одни картинки сжимаются, а другие нет
Сжатие с потерями выигрывает там, где много плавных переходов и мелких деталей — то есть на фотографиях. Алгоритм отбрасывает то, что глаз всё равно не различает, и на снимке с 12 мегапикселями отбрасывать есть что.
На графике, скриншоте и логотипе плавных переходов нет: сплошные заливки, чёткие границы, ограниченная палитра. Такие изображения уже эффективно хранятся в PNG, и попытка сжать их с потерями даёт грязь вокруг букв при почти том же весе. Именно поэтому в таких случаях возвращается оригинал.