-
-
-
-
-
-
-
-
- public void BuildWatermark(string rSrcImgPath,string rMarkImgPath,string rMarkText,string rDstImgPath)
- {
-
-
- Image imgPhoto = Image.FromFile(rSrcImgPath);
- int phWidth = imgPhoto.Width;
- int phHeight = imgPhoto.Height;
- Bitmap bmPhoto=new Bitmap(phWidth,phHeight, PixelFormat.Format24bppRgb);
- bmPhoto.SetResolution(72,72);
- Graphics grPhoto = Graphics.FromImage(bmPhoto);
-
-
- Image imgWatermark = new Bitmap(rMarkImgPath);
- int wmWidth = imgWatermark.Width;
- int wmHeight = imgWatermark.Height;
-
-
- grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
- grPhoto.DrawImage(
- imgPhoto,
- new Rectangle(0, 0, phWidth, phHeight),
- 0,
- 0,
- phWidth,
- phHeight,
- GraphicsUnit.Pixel);
-
-
-
- int[] sizes = new int[]{16,14,12,10,8,6,4};
- Font crFont = null;
- SizeF crSize = new SizeF();
- for (int i=0 ;i<7; i++)
- {
- crFont = new Font("arial", sizes[i],
- FontStyle.Bold);
- crSize = grPhoto.MeasureString(rMarkText,
- crFont);
- if((ushort)crSize.Width < (ushort)phWidth)
- break;
- }
-
-
-
- int yPixlesFromBottom = (int)(phHeight *.05);
- float yPosFromBottom = ((phHeight -
- yPixlesFromBottom)-(crSize.Height/2));
- float xCenterOfImg = (phWidth/2);
- StringFormat StrFormat = new StringFormat();
- StrFormat.Alignment = StringAlignment.Center;
-
-
-
- SolidBrush semiTransBrush2 =
- new SolidBrush(Color.FromArgb(153, 0, 0,0));
- grPhoto.DrawString(rMarkText,
- crFont,
- semiTransBrush2,
- new PointF(xCenterOfImg+1,yPosFromBottom+1),
- StrFormat);
- SolidBrush semiTransBrush = new SolidBrush(
- Color.FromArgb(153, 255, 255, 255));
- grPhoto.DrawString(rMarkText,
- crFont,
- semiTransBrush,
- new PointF(xCenterOfImg,yPosFromBottom),
- StrFormat);
-
- Bitmap bmWatermark = new Bitmap(bmPhoto);
- bmWatermark.SetResolution(
- imgPhoto.HorizontalResolution,
- imgPhoto.VerticalResolution);
- Graphics grWatermark =
- Graphics.FromImage(bmWatermark);
-
-
-
|
请发表评论