Элемент управления для просмотра изображений Tiff Jpeg - бесплатно / с открытым исходным кодом

У меня есть миллионы файлов tiff со сжатием jpeg. Я работаю с этой библиотекой под названием Lib.tif. Net version, она очень хороша, и она может читать / тегировать / сохранять tiff со сжатием JPEG (6/7). Я также пробовал библиотеки imageMagic и FreeImage (оба похожи)

проблема 1 заключается в том, что .NET (2.0 / 3.5 / 4.0) не поддерживает просмотр Tiff со сжатием Jpeg в элементах управления средства просмотра изображений. Есть ли у кого-нибудь обходной путь? или есть ли какой-либо элемент управления для просмотра изображений Tiff Jpeg - бесплатно / с открытым исходным кодом? можем ли мы разделить части Tiff как растровое изображение и передать его в элемент управления просмотра изображений? Если да, то не могли бы вы помочь мне? Я знаю, что существует множество платных версий, таких как GDpicture, viscom, leedtools и т. д., но мне нужна одна бесплатная.

проблема 2 заключается в том, что файлы открываются в Windows 7 MODI, программе просмотра фотографий, paint.net и других приложениях. (как 32-битная, так и 64-битная версии). НО те же изображения не открываются в программе просмотра факсов Windows XP. Я также пробовал с Office 2007 MODI, но безуспешно. Есть идеи или обходные пути?

Пожалуйста помоги.

Спасибо ; С уважением, прад


person pradvk    schedule 23.10.2011    source источник


Ответы (1)


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

У вас может возникнуть проблема, если используется сжатие «старый jpeg», и в этом случае вам нужно использовать libtiff или что-то подобное для преобразования изображения.

public static Image[] GetFrames(Image sourceImage)
{
    Guid objGuid = sourceImage.FrameDimensionsList[0];
    FrameDimension objDimension = new FrameDimension(objGuid);
    int frameCount = sourceImage.GetFrameCount(objDimension);
    Image[] images = new Image[frameCount];
    for (int i = 0; i < frameCount; i++)
    {
        MemoryStream ms = new MemoryStream();
        sourceImage.SelectActiveFrame(objDimension, i);
        sourceImage.Save(ms, ImageFormat.Jpeg);
        images[i] = Image.FromStream(ms);
    }
    return images;
}

Вторая проблема вызвана разными версиями GDI + в Windows. К сожалению, похоже, что нет возможности обновить предыдущие версии. Возможно, вам придется использовать внешнюю программу просмотра или другое сжатие.

person Alex AIT    schedule 24.01.2012