Accueil > > > [.NET] GENERER UN PAGE IMAGE: IMAGE.JPG.ASPX
[.NET] GENERER UN PAGE IMAGE: IMAGE.JPG.ASPX
Information sur la source
Description
dans certains sites il est interessant de pouvoir mettre des images personnalisé, que l'on créer pour un seul visiteur, dans mon cas j'utilise une méthode vu sur c2i.fr qui permet de créer une image et de s'en servir directement Je vous explique comment ca marche -Vous créer un fichier image.jpeg.aspx + son code behind correspondant avec le code ci dessous (j'ai mis que le fichier vb car le .aspx n'a rien d'interessant) - Pour afficher vos images vous n'avez qu'a faire dans un fichier html : <img src="image.jpeg.aspx?photo=images/voiture.jpg" /> Attention a ce que vous metter dans le querystring il faut que le serveur puisse avoir accés au fichier Update: 26.11.03 : - j'ai corrigé ce que disait Fabrice pour la sécurité, on est plus obligé de connaitre l'adresse exacte de l'image mais l'image relative suffit - j'ai rajouté un querystring height (ou width) qui permet de spécifier la hauteur de la photo et la largeur est toujours calculé en fonction du rapport width/height original - J'ai aussi rajouté une image perso qui indiquait qu'il y avait une erreur, j'ai pas cherché à la créer selon la hauteur car je pense pas que ce soit bien utile, mais il suffit juste de modifier le code selon l'exemple du dessous, l'image se trouve dans le repertoire images/ et se nomme none.jpg Vous pouvez voir un exemple d'utilisation de ce code sur http://jesusonline.int.webmatrixhosting.net/ (pour l'instant c'est l'ancienne version du script qui est dessus)
Source
- Imports System.io
-
- Public Class image
- Inherits System.Web.UI.Page
-
- #Region " Code généré par le Concepteur Web Form "
-
- 'Cet appel est requis par le Concepteur Web Form.
- <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
-
- End Sub
-
- 'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
- 'Ne pas supprimer ou déplacer.
- Private designerPlaceholderDeclaration As System.Object
-
- Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
- 'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
- 'Ne le modifiez pas en utilisant l'éditeur de code.
- InitializeComponent()
- End Sub
-
- #End Region
-
-
- Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
-
- Try
-
- ' On déclare une nouvelle image provenant du querystring("photo")
- Dim newImage As System.Drawing.Image
- newImage = System.Drawing.Image.FromFile(Request.QueryString("photo"))
-
- ' On redefinit une hauteur
- Dim hauteur As Integer = 120
- Dim largeur As Integer
-
- Try
-
- ' Nouveau paramètres d'entrée on peut définir une hauteur pour une image
- ' à partir du querystring height=88
- ' le try est la au cas ou qu'on rentre autre chose
- ' qu' un string dans le querystring
- If Not Request.QueryString("height") = "" Then
- 'Si on mets qqchose dans le querystring height
- 'on essaye de le convertir en integer
- 'on prend sa valeur absolue car une hauteur négative bof
- 'si c'est pas possible le try est fait pour ca
- 'j'aime pas trop cette facon de travailler et si qqn en connaissait une autre plus efficace je suis preneur
- hauteur = Math.Abs(CInt(Request.QueryString("height")))
- End If
-
- Catch ex As Exception
- Trace.Warn(ex.ToString)
- End Try
-
- ' on calcule la largeur suivant le rapport Width/Height de l'image d'origine
- largeur = (newImage.Width / newImage.Height) * hauteur
-
- 'On fait de cette manière pour définir la hauteur suivant la largeur
- 'Dim hauteur, largeur As Integer
- '
- '...
- '
- 'hauteur = (newImage.Height / newImage.Width) * largeur
-
- 'On déclare un Bitmap ayant pour paramètre l'image
- 'd'origine la nouvelle largeur et la nouvelle hauteur
- Dim oB As New Bitmap(newImage, largeur, hauteur)
-
- 'On fait un graphics avec comme image source le bitmap nouvellement crée
- 'On lui met une qualité haute
- Dim g As Graphics = Graphics.FromImage(oB)
- g.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
-
- 'Voici un exemple si vous voulez ecrire qqchose dans l'image
- 'Mais il existe de nombreuse propriétés pour le graphics
-
- 'Dim drawFont As New Font("comic sans ms", 16, FontStyle.Bold)
- 'Dim srectangle As New Rectangle(0, 0, 100, 32)
- 'Dim drawBrush As New Drawing2D.LinearGradientBrush(srectangle, Color.Gray, Color.White, LinearGradientMode.Vertical)
- 'g.DrawString("www.monsite.fr.st", drawFont, drawBrush, largeur / 2, hauteur - 32)
-
- Try
- 'On vide tt ce qui est peut etre écrit dans la page web
- Response.ClearContent()
- 'On envoie le contenu binaire du jpeg dans la page web
- oB.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)
-
- Catch ex As Exception
- Trace.Warn(ex.ToString)
-
- Finally
- 'On envoie ce qu'on veut écrire
- Response.Flush()
- 'on dit que le fichier est une image jpeg
- Response.ContentType = "image/jpeg"
-
- End Try
-
- 'On décharge toutes les images
- oB.Dispose()
- g.Dispose()
- newImage.Dispose()
-
- Catch ex As Exception
- 'si il y'a une erreur on l'ecrit dans le trace
- Trace.Warn(ex.ToString)
- 'une erreur courante peut etre le fait que
- 'l'image demandé n'existe pas dans ce cas
-
- Dim sfilename As String = "images/none.jpg"
-
- Response.WriteFile(sfilename)
- Response.Flush()
- Response.ContentType = "image/jpeg"
-
- End Try
-
- End Sub
-
- End Class
Imports System.io
Public Class image
Inherits System.Web.UI.Page
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
'Ne pas supprimer ou déplacer.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
Try
' On déclare une nouvelle image provenant du querystring("photo")
Dim newImage As System.Drawing.Image
newImage = System.Drawing.Image.FromFile(Request.QueryString("photo"))
' On redefinit une hauteur
Dim hauteur As Integer = 120
Dim largeur As Integer
Try
' Nouveau paramètres d'entrée on peut définir une hauteur pour une image
' à partir du querystring height=88
' le try est la au cas ou qu'on rentre autre chose
' qu' un string dans le querystring
If Not Request.QueryString("height") = "" Then
'Si on mets qqchose dans le querystring height
'on essaye de le convertir en integer
'on prend sa valeur absolue car une hauteur négative bof
'si c'est pas possible le try est fait pour ca
'j'aime pas trop cette facon de travailler et si qqn en connaissait une autre plus efficace je suis preneur
hauteur = Math.Abs(CInt(Request.QueryString("height")))
End If
Catch ex As Exception
Trace.Warn(ex.ToString)
End Try
' on calcule la largeur suivant le rapport Width/Height de l'image d'origine
largeur = (newImage.Width / newImage.Height) * hauteur
'On fait de cette manière pour définir la hauteur suivant la largeur
'Dim hauteur, largeur As Integer
'
'...
'
'hauteur = (newImage.Height / newImage.Width) * largeur
'On déclare un Bitmap ayant pour paramètre l'image
'd'origine la nouvelle largeur et la nouvelle hauteur
Dim oB As New Bitmap(newImage, largeur, hauteur)
'On fait un graphics avec comme image source le bitmap nouvellement crée
'On lui met une qualité haute
Dim g As Graphics = Graphics.FromImage(oB)
g.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
'Voici un exemple si vous voulez ecrire qqchose dans l'image
'Mais il existe de nombreuse propriétés pour le graphics
'Dim drawFont As New Font("comic sans ms", 16, FontStyle.Bold)
'Dim srectangle As New Rectangle(0, 0, 100, 32)
'Dim drawBrush As New Drawing2D.LinearGradientBrush(srectangle, Color.Gray, Color.White, LinearGradientMode.Vertical)
'g.DrawString("www.monsite.fr.st", drawFont, drawBrush, largeur / 2, hauteur - 32)
Try
'On vide tt ce qui est peut etre écrit dans la page web
Response.ClearContent()
'On envoie le contenu binaire du jpeg dans la page web
oB.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)
Catch ex As Exception
Trace.Warn(ex.ToString)
Finally
'On envoie ce qu'on veut écrire
Response.Flush()
'on dit que le fichier est une image jpeg
Response.ContentType = "image/jpeg"
End Try
'On décharge toutes les images
oB.Dispose()
g.Dispose()
newImage.Dispose()
Catch ex As Exception
'si il y'a une erreur on l'ecrit dans le trace
Trace.Warn(ex.ToString)
'une erreur courante peut etre le fait que
'l'image demandé n'existe pas dans ce cas
Dim sfilename As String = "images/none.jpg"
Response.WriteFile(sfilename)
Response.Flush()
Response.ContentType = "image/jpeg"
End Try
End Sub
End Class
Conclusion
Si vous enregistrer la page avec vos photos, les images auront l'extension .html ??? si quelqu'un voit pourkoi qu'il hésite pas à me le faire savoir
Si vous avez des questions hésitez pas
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GRIDVIEW CHECKBOXGRIDVIEW CHECKBOX par invent001
Cliquez pour lire la suite par invent001 OUTIL MYSQLOUTIL MYSQL par nobla
Cliquez pour lire la suite par nobla
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|