Classe system.drawing ou comment dessiner avec asp.net

5/5 (7 avis)

Snippet vu 24 427 fois - Téléchargée 38 fois

Contenu du snippet

Cette source sert d'exemple a la casse system.drawing qui et tres puissante et ce sert de GDI+, l'exemple qui est mis ici est tiré du site www.c2i.fr et aussi de l'aide du SDK qui est tres bien fait sur cette classe et que je vous conseille.
Cette source crée une image a partir de deux autres, Je rajoute une signature a la photo, pour que qd on me la pique il y ai tj mon adresse, la photo est ecrasé a cq fois que qqn demande la page.

Source / Exemple :


<%@ Page Language="VB" Debug="true"%>
<%@ import namespace="System.Drawing" %>
<script language="VB" runat="server">

Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dessineimage()										' creer ou ecrase le fichier photo_rendu.jpg
photo.ImageUrl = "photo_rendu.jpg"					' on associe la photo au controle		
End Sub

Sub Dessineimage()

'on charge une image avec l'image d'origine
Dim newImage As Drawing.Image = System.Drawing.Image.FromFile(server.MapPath("image3.jpg"))

'on crée cette image
Dim mB As New Bitmap(newImage)

'on crée le graphics
Dim g As Graphics = Graphics.FromImage(mB)

' meilleur qualité possible du graphique
g.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality

'on charge une nouvelle image qui sera devant l'autre
Dim newImage2 As Drawing.Image = System.Drawing.Image.FromFile(server.MapPath("signature.png"))

'on dessine l'image2 chargé ou l'on veut dans le graphique
' voici la syntaxe minimale donné par le SDK 
	'Overloads Public Sub DrawImage( _
	'   ByVal image As Image, _
	'   ByVal point As Point _
	')
g.DrawImage(newImage2,275,400)

'on va faire un petit rectangle noir sur la photo
'voici la syntaxe minimale donné par le SDK 
	'Overloads Public Sub FillRectangle( _
	'   ByVal pen As Pen, _
	'   ByVal x As Integer, _
	'   ByVal y As Integer, _
	'   ByVal width As Integer, _
	'   ByVal height As Integer _
	')
' Create pen.
Dim blueBrush As New SolidBrush(Color.Blue)
g.FillRectangle(blueBrush,0,95,200,40)

'on peut aussi ecrire
'voici la syntaxe minimale donné par le SDK 
	'Overloads Public Sub DrawString( _
	'   ByVal s As String, _
	'   ByVal font As Font, _
	'   ByVal brush As Brush, _
	'   ByVal point As PointF _
	')
dim drawBrush  as new SolidBrush(Color.yellow)
Dim drawFont As New Font("Verdana", 16)
g.drawstring("www.monsite.fr.st",drawFont, drawBrush , 0,100)

'on sauvegarde l'image au format jpeg mais il existe plein d'autre format 
mB.Save(Server.MapPath("photo_rendu.jpg"), Imaging.ImageFormat.jpeg) 

End Sub

</script>
<html><body>
<form runat=server>
<asp:image id="photo" runat="server" Height="450px" Width="600px" /><br>
</form> 
</body></html>

Conclusion :


j'essaierai de completer la source pour que vous puissiez voir d'autres options, pour des question n'esitez pas ;)

A voir également

Ajouter un commentaire Commentaires
3KyNoX Messages postés 17 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 12 novembre 2009
17 juin 2009 à 15:57
Salut,

je cherchais un possibilité d'insérer une image ou d'écrire du texte sur une autre image, on dirait que je viens de trouver ma solution par l'intermédiaire de GDI+

Par contre l'utilité de ces fonctions pour moi n'est pas d'ajouter un copyright sur une image afin d'enregistrer le tout mais faire de la personnalisation d'objets divers, comme un t-shirt par exemple.

Un site qui le fait mais malheureusement en php : http://www.shirtcity.com/shop/index.php

La seule fonction qui me manque est de changer la couleur des pixels d'un motif, es ce possible ?

Merci ;p
Glumph Messages postés 9 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 13 août 2006
8 août 2006 à 11:45
Excellent code!
Suite à ta remarque F_____, comment pourrait-on faire pour ne pas dédoubler chaque image? Parce qu'en admettant que j'aie 20 images que je veuille estampiller, ça me recréera bien 20 nouveaux fichiers non? Y'a-t-il une solution pour contourner le problème?
Merci
bsmoumene Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 10 juillet 2006
6 mars 2006 à 17:08
salut,
ça marche bien mais y'a un problème c que lorsque j'insère la deuxième image, elle garde pas les même proportion càd ça change selon la taille de la première image .

samir...
cs_ashi4 Messages postés 2 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 31 août 2004
18 août 2004 à 13:56
salut,
le problème "Une erreur générique s'est produite dans GDI+."

pour ma part, ça provient toujours de droit d'accès au dossier insuffisant.

mauvais pour la sécurité de l'application, mais ouvre un partage sur ton dossier image. en général ça marche.

Ashi4
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
3 sept. 2003 à 02:20
Très bonne idée que la superposition de plusieurs images, très courament utilisé notemment sur des sites commerciaux ou un achat est nécessaire afin d'obtenir une image clean et non 'signé' ou surtout dégradée.

Enfin l'utilisation de la class Drawing est un bonheur en soit et cette source n'est qu'un exemple de ce qu'on peut faire avec.

F___

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.