Как уменьшить размер изображения в C # и .NET 3.5?

У меня есть снимок экрана, который я делаю в своем мобильном приложении. Снимок экрана занимает около 32 КБ при сохранении в формате png на диске.

Я отправляю их на центральный сервер SQL, и 32 КБ слишком велики для того количества раз, которое мне нужно будет сохранить этот снимок экрана (около 2500 раз в день).

Есть ли какие-нибудь уловки, которые я могу сделать, чтобы уменьшить экономию?

Вот код, который я использую сейчас, чтобы перевести его из Bitmap в байты ( для отправки на сервер для хранения):

MemoryStream stream = new MemoryStream();
 _signatureImage.Save(stream, ImageFormat.Png);
 return stream.ToArray();

_signatureImage - это Bitmap , и это снимок экрана, о котором идет речь.

Вот пример сохраняемого снимка экрана:

Screen Shot Image

В голову приходят вещи (но я не знаю, как их делать):

  1. Уменьшите фактическую высоту и ширину изображения (но, надеюсь, так, чтобы оно не искажалось).
  2. Измените его на черно-белое изображение (не уверен, что это принесет мне реальную экономию места)
  3. Сжимайте его больше (мне это не нравится, потому что тогда оно не читается из базы данных) .

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

Спасибо за любую помощь.

10
задан Vaccano 7 October 2010 в 20:45
поделиться