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

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

Ответы [ 3 ]

2 голосов
/ 07 января 2009

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

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

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

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

2 голосов
/ 07 января 2009

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

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

1 голос
/ 07 января 2009

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

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

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

...