PNG не является форматом изображения с потерями, поэтому вам, вероятно, потребуется преобразовать изображение в другой формат - скорее всего, в JPEG. JPEG имеет настраиваемый коэффициент качества - вы можете просто продолжать уменьшать коэффициент качества, пока не получите достаточно маленькое изображение. Все это можно сделать без изменения разрешения изображения.
Очевидно, что в зависимости от изображения потеря качества изображения может быть существенной. JPEG лучше всего подходит для изображений «настоящей жизни», таких как изображения с камер. Это не так хорошо для логотипов, снимков экрана или других изображений с «резкими» переходами от светлого к темному. (PNG, с другой стороны, ведет себя противоположно - лучше всего подходит для логотипов и т. Д.)
Тем не менее, при разрешении 800x600, будет очень легко получить JPEG меньше 1 МБ. (Я был бы очень удивлен, увидев файл размером 30 МБ при этих небольших размерах.) На самом деле, даже несжатый , изображение будет только около 1,4 МБ:
800 pixels * 600 pixels * 3 Bytes / color = 1,440,000 Bytes = 1.4MB
Таким образом, вам нужно только коэффициент сжатия 1,4: 1, чтобы уменьшить изображение до 1 МБ. В зависимости от типа изображения сжатие PNG может очень хорошо обеспечить этот уровень сжатия. Если нет, то JPEG почти наверняка может - коэффициенты сжатия JPEG порядка 10: 1 не редкость. Опять же, качество / размер вывода будут зависеть от типа изображения.
Наконец, хотя я некоторое время не использовал ImageMagick, я почти уверен, что есть варианты повторного сжатия изображения с использованием определенного показателя качества. Прочитайте документы и начните экспериментировать!
РЕДАКТИРОВАТЬ: Похоже, это должно быть действительно легко с ImageMagick. Из документов :
$magick> convert input.png -quality 75 output.jpg
Просто продолжайте играть со значением качества, пока не получите подходящий вывод.