Я провел несколько экспериментов этим утром. Мое тестовое изображение было 800x600 с размером файла 100,69 КБ при сохранении в формате PNG. Я вставил это в PDF (используя iTextSharp и обычный метод GetInstance ()), и размер файла увеличился с 301,71K до 402,63K. Затем я повторно сохранил мое тестовое изображение в виде необработанного растрового изображения с размером файла 1,440,054. Я вставил это в PDF, и размер файла уменьшился до 389,81K. Интересно!
Я провел некоторое исследование в Интернете для возможного объяснения, и, основываясь на том, что я нашел, похоже, что iTextSharp не сжимает изображения, а скорее сжимает все с помощью некоторого общего сжатия. Другими словами, BMP на самом деле не конвертируется в другой тип файла, он просто сжимается так же, как если бы вы его архивировали. Что бы они ни делали, это должно быть хорошо, поскольку оно сжимается лучше, чем изображение со сжатием PNG. Я предполагаю, что iTextSharp woudld попытается сжать PNG, но сожмет на 0%, так как он уже сжат. (Это не согласуется с наблюдениями первоначального автора, однако ... Пэдди сказал, что его размер PDF увеличился намного больше, чем размер PNG ... не уверен, что с этим делать. Я могу только проводить собственные эксперименты).
Выводы:
1) Мне не нужно добавлять какую-то необычную библиотеку в мой проект для преобразования моего (возможно, динамически созданного) изображения в PNG; на самом деле лучше оставить его без сжатия и позволить iTextSharp выполнять всю работу по сжатию.
2) Я также читал в Интернете материал о сохранении изображений в iTextSharp с определенным разрешением. Я НЕ видел эту проблему ... Я использовал метод ScalePercent (), чтобы масштабировать растровое изображение до 1%, и размер файла был таким же, и не было "потери" в пикселях растрового изображения в растровом изображении ... это подтверждает, что iTextSharp делает простое, хорошее, общее сжатие без потерь.