Добавление логотипа в файл TIFF, увеличение размера страницы.Как сохранить одинаковый размер страницы? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь добавить логотип в файл TIFF, сначала преобразовав его в изображение, растровый объект для получения активного кадра и добавив логотип один за другим.но размер увеличивается при добавлении активного кадра файлов TIFF к объекту изображения.далее это напрямую влияет на конечный размер файла.Ниже приведен код
byteStream, увеличивающий его размер при сохранении растрового изображения.

Image bitmap = Image.FromFile(tifFilePath);
var encoder = ImageCodecInfo.GetImageEncoders().First(c => c.MimeType == "image/jpeg");
var encParams = new EncoderParameters() { Param = new[] { new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 30L) } };
int count = bitmap.GetFrameCount(FrameDimension.Page);
for (int idx = 0; idx < count; idx++)
{
bitmap.SelectActiveFrame(FrameDimension.Page, idx);
Bitmap bitmapT = new Bitmap(bitmap, (int)(bitmap.Width * (300 / bitmap.HorizontalResolution)), (int)(bitmap.Height * (300 / bitmap.VerticalResolution)));
MemoryStream byteStream = new MemoryStream();
if (fileExt != "pdf")
{
bitmapT.SetResolution(300, 300);
bitmapT.Save(byteStream, encoder, encParams);
}
else
{
bitmap.Save(byteStream, encoder, encParams);
}
System.Drawing.Image image = System.Drawing.Image.FromStream(byteStream);
Stream stream1 = new FileStream(WatermarkStampImagePath, FileMode.Open, FileAccess.Read, FileShare.Read);
Image image1 = Image.FromFile(WatermarkStampImagePath);


using (Graphics grp = Graphics.FromImage(image))
{
int tops = Convert.ToInt32(grp.VisibleClipBounds.Height - Convert.ToInt32(txtWatermartTop.Text));
grp.InterpolationMode = InterpolationMode.NearestNeighbor;
grp.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
grp.DrawImage(bitmapT, 10, Convert.ToInt32(tops));//Position of Water Marks

//pagesbase64List.Add(Convert.ToBase64String((byte[])SaveImageToStream(image).ToArray()));
pagesbase64List.Add(Convert.ToBase64String((byte[])SaveImageToStream(image).ToArray()));
}
byteStream.Dispose();
bitmapT.Dispose();
image1.Dispose();
}
...