Classe system.drawing ou comment dessiner avec asp.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 270 fois - Téléchargée 36 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
-
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
-
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
-
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
-
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
1766
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
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.