I am using Bitmap to water mark tif image files after it reach file number 440 the image size increases which results in a small text watermark. My method is designed to process large amount of files, it also checks if the image is colored or not and process accordingly. Any suggestions on what I should try. I don't know why it is happening. orginal size: 2480 x 3580
large size: 5250 x 7497
What I have tried:
public void waterMark(string euroPrefix, string resultedTifFolders, string waterMarkedTif)
{
using (Brush brush = new SolidBrush(Color.Black))
{
using (Font font = new Font("Arial", 50, GraphicsUnit.Pixel))
{
using (Bitmap original_bitmap = new Bitmap(resultedTifFolders))
{
int compressionTagIndex = Array.IndexOf(original_bitmap.PropertyIdList, 0x103);
PropertyItem compressionTag = original_bitmap.PropertyItems[compressionTagIndex];
byte[] com = compressionTag.Value;
Encoder encoder = Encoder.Compression;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(encoder, (long)EncoderValue.CompressionCCITT4);
myEncoderParameters.Param[0] = myEncoderParameter;
ImageCodecInfo myImageCodecInfo;
myImageCodecInfo = GetEncoderInfo("image/tiff");
SizeF euroPrefixSize;
if (new[] { 5, 7 }.Contains(com[0]))
{
using (Graphics tempGraphics = Graphics.FromImage(original_bitmap))
{
euroPrefixSize = tempGraphics.MeasureString(euroPrefix, font);
}
using (Bitmap new_bitmap = new Bitmap(original_bitmap.Width, original_bitmap.Height + (int)euroPrefixSize.Height + 10))
{
new_bitmap.SetResolution(original_bitmap.HorizontalResolution,original_bitmap.VerticalResolution);
using (Graphics graphics = Graphics.FromImage(new_bitmap))
{
graphics.FillRectangle(Brushes.White, 0, 0, original_bitmap.Width, original_bitmap.Height + 100);
graphics.DrawImage(original_bitmap, 0, 0, original_bitmap.Width, original_bitmap.Height);
Point position = new Point(original_bitmap.Width - ((int)euroPrefixSize.Width + 200), original_bitmap.Height + 5);
graphics.DrawString(euroPrefix, font, brush, position);
new_bitmap.Save(waterMarkedTif, myImageCodecInfo, myEncoderParameters);
new_bitmap.Save(waterMarkedTif, ImageFormat.Tiff);
}
}
return;
}
else
{
Bitmap tempBitmap = new Bitmap(original_bitmap.Width, original_bitmap.Height);
using (Graphics tempGraphics = Graphics.FromImage(tempBitmap))
{
euroPrefixSize = tempGraphics.MeasureString(euroPrefix, font);
}
tempBitmap = new Bitmap(original_bitmap.Width, original_bitmap.Height + (int)euroPrefixSize.Height + 10);
tempBitmap.SetResolution(original_bitmap.HorizontalResolution,original_bitmap.VerticalResolution);
using (Graphics graphics = Graphics.FromImage(tempBitmap))
{
graphics.FillRectangle(Brushes.White, 0, 0, original_bitmap.Width, original_bitmap.Height + 100);
graphics.DrawImage(original_bitmap, 0, 0, original_bitmap.Width, original_bitmap.Height);
Point position = new Point(original_bitmap.Width - ((int)euroPrefixSize.Width + 200), original_bitmap.Height + 5);
graphics.DrawString((euroPrefix), font, brush, position);
tempBitmap.Save(waterMarkedTif, ImageFormat.Tiff);
}
}
}
}
}
}