2011-12-28 4 views
0

Je voudrais appliquer un filigrane aux images.Barre blanche, puis filigrane de texte?

En ce moment, je suis en train d'utiliser ce code, mais il ne sur les différentes images de taille:

public void AddWaterMark(string filePath, string watermarkText) 
{ 
    Image img = Image.FromFile(
     MapPath(GlobalVariables.UploadPath + "/" + filePath)); 
    Graphics gr = Graphics.FromImage(img); 
    Font font = new Font("Alial Black", 40); 
    Color color = Color.FromArgb(50, 241, 235, 105); 
    StringFormat stringFormat = new StringFormat 
           { 
            Alignment = StringAlignment.Near, 
            LineAlignment = StringAlignment.Near 
           }; 
    gr.SmoothingMode = SmoothingMode.AntiAlias; 
    gr.DrawString(watermarkText, font, new SolidBrush(color), 
     new Point(20, img.Height - 60), stringFormat); 

    img.Save(MapPath(GlobalVariables.UploadPath + "/w_" + filePath)); 
} 

Parfois, la police va du fond. Je veux que ce soit du texte au bas de l'image.

Comment puis-je m'assurer qu'il ne va pas au fond?

Aussi, je veux l'améliorer légèrement. Je veux faire une barre blanche, mais transparente sur toute la longueur du bas de l'image, puis écrire du texte noir dessus. Est-ce possible avec le dessin? Donc, une barre à travers le bas de l'image, peut-être 60 pixels de haut, et au milieu de la 60px, je veux un texte écrit (aligné à gauche).

Je trouve également le texte se déplace arounf, en fonction de la taille du fichier

est ici une image qui fonctionne: http://www.listerhome.com/fulldisplay.aspx?imageid=100055

Bur parfois, quand j'uploadé des images de haute résolution, je reçois ceci: http://www.listerhome.com/fulldisplay.aspx?imageid=100060

Répondre

1

Vous pouvez utiliser la fonction MeasureString pour calculer la taille de la chaîne.

SizeF stringSize = gr.MeasureString(watermarkText, font, img.Width - 40); 
gr.DrawString(watermarkText, font, new SolidBrush(color), 
    new RectangleF(20, img.Height - stringSize.Height, img.Width - 40, stringSize.Height), 
    stringFormat); 
+0

Ceci ajoute un rectangle, ce qui est très utile, merci. Mais je constate que sur les images plus grandes, la police est plus grande que lorsque je charge des images plus petites. – Craig

+0

Pouvez-vous poster des échantillons d'image (grands et petits)? –

+0

Je peux fournir l'URL de mon site de test? – Craig