Как кодировать System.Drawing.Bitmap в CCITT с C #? - PullRequest
0 голосов
/ 22 марта 2012

Мне нужно записать черно-белое изображение в файл PDF, поэтому я подумал, что лучше использовать CCITTDecode. Вопрос в том, как мне сохранить мой

System.Drawing.Bitmap img

к потоку файлов, используя правильный алгоритм кодирования? Я пробовал со следующим кодом

EncoderParameters eps = new EncoderParameters(1);

eps.Param[0] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionCCITT4);
ImageCodecInfo[] ie = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo tiffEncoder = null;

for (int i = 0; i < ie.Length; i++)
{
    if (ie[i].MimeType == "image/tiff")
    {
        tiffEncoder = ie[i];
        break;
    }
}

img.Save(_stream, tiffEncoder, eps);

но выводом является весь файл TIFF (включая заголовок и другие маркеры). Мне нужны только необработанные данные, потому что параметры декодирования представлены в PDF.

1 Ответ

1 голос
/ 22 марта 2012

System.Drawing.Bitmap не предлагает никаких средств для сохранения только необработанных данных изображения.

Я думаю, что в этом случае вам будут лучше обслуживать некоторые сторонние библиотеки.Например, вы можете попробовать библиотеку LibTiff.Net (производства моей компании).Библиотека является бесплатным (коммерческая лицензия BSD) с открытым исходным кодом.

LibTiff.Net может кодировать System.Drawing.Bitmap с помощью CCITT или вы можете открыть уже закодированный файл.После этого вы можете использовать ReadRawStrip и ReadRawTile для доступа к необработанным данным изображения.

Вот пример, который может быть полезен для вас:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...