Разрешение изображения TIFF, созданного в C # - PullRequest
1 голос
/ 06 декабря 2011

Для приложения управления факсом я написал код C # для создания файла TIFF с нуля:

// Bitmap imgNew = new Bitmap(2550, 3300);
Bitmap imgNew = new Bitmap(1728, 1000);
imgNew.SetResolution((float)96, (float)96);

Graphics graphNew = Graphics.FromImage(imgNew);
graphNew.Clear(Color.White);

// Followed by a series of graphNew.DrawString statements

imgNew.Save(ms, ImageFormat.TIFF); // where ms is a MemoryStream

При отсутствии комментария в первой строке будет получено изображение размером 8,5 x 11 дюймов с текстовыми полями.в правильных местах.Вторая строка имеет размеры, которые ближе к размерам файлов, созданных существующим коммерческим приложением, а размер выходного файла составляет примерно 1/10 размера файла, созданного моим приложением.Если я использую небольшое значение (46) для параметров SetResolution, текст очень маленький, но размеры документа правильные.К сожалению, файл по-прежнему очень большой.

Я явно не делаю что-то не так при создании моего файла.Сведения о файле указывают, что оба значения разрешения по горизонтали и вертикали равны 96, глубина в битах равна 1, а сжатие установлено на CCITT T.6.

Что я могу сделать, чтобы сохранить правильный формат, но уменьшитьразмер файла?

1 Ответ

1 голос
/ 06 января 2012

Размер факса, который вы хотите использовать (1728, 1000), вероятно, составляет 204 x 98 точек на дюйм.Если вы закодируете разрешение как 96x96 точек на дюйм, оно будет выглядеть сжатым.Двухуровневое изображение этого размера должно сжиматься до 20-100 Кбайт со сжатием T.6 (CCITT-G4).Если он больше 100 КБ, либо вы не сжимаете его как G4, либо изображение может содержать много шума или серых / клетчатых областей.Вы можете попробовать простую функцию удаления шума на изображении, чтобы удалить маленькие "спецификации".

...