Re: Многостраничный TIFF
От: algol Россия about:blank
Дата: 17.09.05 22:28
Оценка: 16 (2)
Здравствуйте, Аноним, Вы писали:

А>Как записать многстраничный TIFF. Из MSDN я понял, как прочитать, точнее как выбрать страницу с которой будешь работать. SelectActiveFrame, вроде бы, должен позволять. А как добавить страницу? Нужно это для того, чтобы сложить несколько TIFF, в которых по одной странице, в один TIFF с несколькими страницами. Есть ли в .NET такая возможность. А если нет, то есть ли еще какой-нибудь способ "покороче", такой, чтобы не возиться в внутренним форматом TIFF? Приложение пишу на C#.


Нужно сначала сохранить первое изображение с параметром энкодера EncoderValue.MultiFrame, а затем добавить остальные изображения через SaveAdd с параметром EncoderValue.FrameDimensionPage. После сохранения всех страниц нужно закрыть файл вызовом SaveAdd с параметром EncoderValue.Flush. Вместо Flush можно указать EncoderValue.LastFrame при сохранении последней страницы.

    string path = "c:\\multipage.tif";
    Bitmap img = new Bitmap("c:\\image1.jpg");

    ImageCodecInfo inf = GetEncoderInfo("image/tiff");
    Encoder saveFlag = Encoder.SaveFlag;

    // Save first page
    System.Drawing.Imaging.EncoderParameters myEncoderParameters = new System.Drawing.Imaging.EncoderParameters(1);
    myEncoderParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(saveFlag, (long)EncoderValue.MultiFrame);
    img.Save(path, inf, myEncoderParameters);

    // Save other pages
    myEncoderParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(saveFlag, (long)EncoderValue.FrameDimensionPage);
    Bitmap img2 = new Bitmap("c:\\image2.jpg");
    img.SaveAdd(img2, myEncoderParameters);
    Bitmap img3 = new Bitmap("c:\\image3.jpg");
    img.SaveAdd(img3, myEncoderParameters);

    // Close file
    myEncoderParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(saveFlag, (long)EncoderValue.Flush);
    img.SaveAdd(myEncoderParameters);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.