Как сохранить изображение в формате PNG или JPG с заданным размером выходного файла? (преф. в C #)

StackOverflow https://stackoverflow.com/questions/421056

  •  05-07-2019
  •  | 
  •  

Вопрос

Я хочу сохранить существующее изображение в формате PNG или JPG с заданным размером файла, например, 100 КБ.

Это было полезно?

Решение

PNG использует сжатие без потерь, поэтому вы не можете сжать его ниже определенного уровня.

В .NET вы можете сохранить JPG со сжатием и угадать, насколько большим будет файл после его завершения.

http: // msdn.microsoft.com/en-us/library/system.drawing.image.save(VS.80).aspx - См. «Сохранить изображение JPEG со значением сжатия». раздел.

Кроме того, вы можете изменить размеры изображения, чтобы сделать его меньше.

Другие советы

Только при использовании JPG 2000 вы можете установить размер файла на определенное значение. Используя JPG, вам придется попробовать разные значения качества, а использование PNG даст вам один размер для данного изображения и уровень сжатия - вы можете только попытаться изменить размер изображения, что даст вам меньший размер.

Можно также попытаться изменить размер изображения так, чтобы несжатое изображение имело нужный размер, но тогда PNG и особенно JPG часто будут иметь гораздо меньший размер файла.

Для PNG настройки качества не существует, поэтому вы не можете контролировать размер файла.

Jpg имеет настройку качества, которая определяет качество изображения. более низкие настройки качества приводят к меньшим файлам. Однако, как правило, нет опции для «дать качество, необходимое для файла размером x».

Вы можете достичь того же результата, используя довольно неэффективный подход к преобразованию в JPG в памяти, наблюдая, насколько велик выходной сигнал, регулируя качество вверх или вниз и повторяя, пока не подойдете достаточно близко. Это может звучать ужасно, но если ваши изображения не слишком большие, вы можете обнаружить, что никто не замечает короткую задержку, пока вы делаете это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top