c# asp.net watermark

Coloque la imagen de marca de agua en otras imágenes(C#, ASP.Net)



watermark (2)

Aquí hay otra solución que utiliza GDI +.

Creación de una fotografía con marca de agua con GDI + para .NET

¿Cómo agrego una imagen de marca de agua a otras imágenes?

Puedo colocar texto en una imagen como una marca de agua, pero ahora tengo una imagen que me gustaría poner allí en lugar del texto. ¿Cómo hago esto en C #?

Solo una vez más para ser específico, tengo la imagen X y quiero usarla como un símbolo de marca de agua. Quiero que este símbolo aparezca en toda mi imagen cuando se muestre en mi sitio web. Así que tendré la imagen X marcada con agua en la imagen Y y Z.

Aquí está el código que tengo actualmente que crea la marca de agua:

public static void AddWaterMark(MemoryStream ms, string watermarkText, MemoryStream outputStream) { System.Drawing.Image img = System.Drawing.Image.FromStream(ms); Graphics gr = Graphics.FromImage(img); Font font = new Font("Tahoma", (float)40); Color color = Color.FromArgb(50, 241, 235, 105); double tangent = (double)img.Height / (double)img.Width; double angle = Math.Atan(tangent) * (180 / Math.PI); double halfHypotenuse = Math.Sqrt((img.Height * img.Height) + (img.Width * img.Width)) / 2; double sin, cos, opp1, adj1, opp2, adj2; for (int i = 100; i > 0; i--) { font = new Font("Tahoma", i, FontStyle.Bold); SizeF sizef = gr.MeasureString(watermarkText, font, int.MaxValue); sin = Math.Sin(angle * (Math.PI / 180)); cos = Math.Cos(angle * (Math.PI / 180)); opp1 = sin * sizef.Width; adj1 = cos * sizef.Height; opp2 = sin * sizef.Height; adj2 = cos * sizef.Width; if (opp1 + adj1 < img.Height && opp2 + adj2 < img.Width) break; // } StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; gr.SmoothingMode = SmoothingMode.AntiAlias; gr.RotateTransform((float)angle); gr.DrawString(watermarkText, font, new SolidBrush(color), new Point((int)halfHypotenuse, 0), stringFormat); img.Save(outputStream, ImageFormat.Jpeg); }


en el mismo lugar donde llamas a gr.DrawString, también puedes hacer gr.DrawImage (posición, tamaño, superposición de imagen). Ayuda si su imagen a superposición se carga desde un archivo PNG (con transparencia) para producir la mejor calidad.