Я обнаружил, что изображения могут быть сжаты на определенный процент. Например:
$compressed_img = compress($source_img, $destination_img, 90);
В этом случае размер $source_img
будет уменьшен до 90% от исходного размера.
Если оригинальный размер $source_img
100 КБ, что из $compressed_img
будет 90кб.
То, что я пытался сделать, — это определить, сжимается ли целевой файл на основе исходного размера, и определить, какой размер будет уменьшен в байтах.
Например, что если вам нужно убедиться, что все загруженные файлы меньше 200 КБ но Вы не должны изменять размер, если загруженный размер уже легче?
Вот псевдокод.
if($source > 200kb){
$compressed = compressByByte($source, 200kb);
}//Again, this is a sude code!
Так как размер исходного файла варьируется, нецелесообразно использовать compress()
функция.
Любой совет будет оценен. (Я использую php с Laravel 5.2)
Я думаю, что вы исходите из неверного предположения: когда вы сжимаете изображение, вы можете указать коэффициент сжатия, но это не значит, что выход составляет 90% от исходного размера, это сильно зависит от содержимого изображения, некоторые изображения могут быть лучше сжаты другие (одноцветное изображение может быть меньше, чем обычное фото).
Тем не менее, что вы можете сделать, это
Помните, что увеличение сжатия в JPEG снижает качество изображения, и вы начинаете видеть низкое количество уродливых ошибок в изображениях, если сжатие слишком высокое, обычно мы не используем сжатие ниже 85.
Других решений пока нет …