Как кодировать System.Drawing.Bitmap в CCITT с помощью C #?

Мне нужно записать черно-белое изображение в файл 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.


person Pincopallino    schedule 21.03.2012    source источник


Ответы (1)


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

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

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

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

person Bobrovsky    schedule 22.03.2012