begin process at 2012 05 27 07:10:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > [.NET] GENERER UN PAGE IMAGE: IMAGE.JPG.ASPX

[.NET] GENERER UN PAGE IMAGE: IMAGE.JPG.ASPX


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Source .NET ( DotNet ) Niveau :Débutant Date de création :23/11/2003 Date de mise à jour :26/11/2003 20:53:13 Vu :17 406

Auteur : jesusonline

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 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

Source avec Zip Source .NET (Dotnet) UTILISATION DE LA MÉTHODE SORT ET SORTDIRECTION AVEC UN GRID...
Source .NET (Dotnet) RESPONSE.FILTER : MANIPULATION DU STREAM DE SORTIE ASP.NET
Source avec Zip Source .NET (Dotnet) OPTIMISATION DE LA SERIALISATION JSON POUR LES LIST<T>
Source avec Zip Source .NET (Dotnet) CRAWLABLELINKBUTTON : UPDATEPANEL ET RÉFÉRENCEMENT
Source .NET (Dotnet) POSTBACKCONTROL - COMMUNICATION CLIENT/SERVEUR AVEC LES UPDA...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CLASS CHARTS, HISTOGRAMCHART ET SECTORCHART par The Red Man
EXTRACTION D'INFORMATIONS IPTC D'UNE IMAGE par teenage
Source avec Zip Source avec une capture Source .NET (Dotnet) MANIPULATION D'IMAGES EN TEMPS RÉEL - RÉDUCTION COMPRESSION ... par badrbadr
Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION D’AJAX ET D’UN WEBSERVICE POUR LA GÉNÉRATION D’I... par tikrimi
REDIMENSIONNER UNE IMAGE - ASPIMAGE par Keneyda

Commentaires et avis

Commentaire de fabrice69 le 26/11/2003 11:43:29 administrateur CS

Pas mal du tout, malgré quelques problème évidents de sécurité avec ce type de méthode, mais ceci est toujours lié avec le fait de chercher en dur le nom du fichier (par exemple si tu fais image.jpeg.aspx?photo=C:WINDOWSMonFichierImage", vu que tu prends directement newImage = System.Drawing.Image.FromFile(Request.QueryString("photo")), tu dois charger le fichier quelque soit son lieu de stockage).
A adapter donc selon ses besoin précis. Mais il faut bien penser à ce type de problème.

Je n'ai pas de solution possible à cette question.

Quoi qu'il en soit pas mal du tout.

F___
Pour ca, "Si vous enregistrer la page avec vos photos, les images auront l'extension .html" je pense que c'est lié à l'outil de conversion de IE qui cherche tous les appels du type ASPX pour les passer en HTML.

Commentaire de misterzinzin le 15/06/2006 23:47:21

super ce code :-)

ps:
Convert.ToInt16("1");

ca marche en C#... donc il doit y avoir l'equivalent en vb.net

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales