Здравствуйте, Аноним, Вы писали:
А>Как записать многстраничный 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);
Как записать многстраничный TIFF. Из MSDN я понял, как прочитать, точнее как выбрать страницу с которой будешь работать. SelectActiveFrame, вроде бы, должен позволять. А как добавить страницу? Нужно это для того, чтобы сложить несколько TIFF, в которых по одной странице, в один TIFF с несколькими страницами. Есть ли в .NET такая возможность. А если нет, то есть ли еще какой-нибудь способ "покороче", такой, чтобы не возиться в внутренним форматом TIFF? Приложение пишу на C#.
08.08.05 17:49: Перенесено модератором из '.NET' — AndrewVK
Вот тут всё сделано:
http://www.codeproject.com/cs/media/SaveMultipageTiff.asp
Сохраняет в чёрно белом формате, но ето легко поправляется.
Переделал под цветной формат, сохраняет tif, но в 8 битном формате. Хотелось бы в 16-битном формате получать TIF.