Все зависит от формата вашего файла ... большинство фотографий сделано в формате JPEG, который является быстрым алгоритмом преобразования Фурье в серверной части. Эмпирическое правило заключается в том, что чем больше вариантов у вас есть изображение, тем меньше размер вам придется использовать для достижения этого порога в 1 МБ. Реальное решение - использовать библиотеку изображений, ImageMagick - самый простой или libjpeg, создать файл, проверить размер, а затем изменить размер при необходимости. На самом деле нет простого ответа, если вы ищете, чтобы он содержал менее 1 МБ, тогда как вам было бы намного проще указать качество. Но вот некоторые инструменты, которые могут вам помочь, если вы разрабатываете приложение:
для C ++: Magick ++ для библиотеки изображений, создайте файл и проверьте байт, в котором вы читаете ... это может помочь
для Java: используйте JMagick для библиотеки изображений (Java API для imagemagick), либо создайте bufferedbytearraystream (я думаю, это имя) и проверьте размер после записи в него jpeg, либо сделайте то же самое с файлом после создания временный файл.