Есть способ, которым это может быть решено. Вы можете использовать бит на пиксель , чтобы проверить уровень сжатия JPEG.
Насколько я понимаю, метрика «качества» JPEG - это число от 0 до 100, где 100 представляет без потерь, а 0 - максимальное сжатие. Как вы говорите, фактические детали сжатия будут варьироваться от кодера к кодеру и (вероятно) от пиксельного блока к пиксельному блоку (макроблоки?). Применение 60 к изображению снизит качество изображения, но также уменьшит размер файла , предположительно, до 60% от исходного размера.
Все ваши изображения, вероятно, будут иметь разные размеры. То, что вы хотите посмотреть, это бит на пиксель .
Вопрос: почему вы сжимаете с фактором качества 60 в первую очередь? Это правильно для всех ваших изображений? Вы пытаетесь достичь определенного размера файла? Или вы счастливы, чтобы сделать их все меньше?
Если вместо этого вы стремитесь к определенному количеству бит на пиксель, тогда ваша проверка просто становится вычислением размера файла, деленного на количество пикселей на изображении, и проверяет это по вашим желаемым битам на пиксель. Если оно больше, примените сжатие.
Конечно, тогда вам придется быть немного более умным, чем выбирать фактор качества 60. Предположительно, 60 означает 60% от исходного размера файла или некоторую внутреннюю настройку. Если это первое, вы можете вычислить новое значение достаточно просто. Если это последнее, вам может понадобиться пробная версия и улучшение, чтобы получить желаемый размер файла.