begin process at 2010 07 31 04:47:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > [.NET] PHOTOTEQUE AUTOMATIQUE V2.0

[.NET] PHOTOTEQUE AUTOMATIQUE V2.0


 Information sur la source

Note :
6,8 / 10 - par 5 personnes
6,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Source .NET ( DotNet ) Niveau :Débutant Date de création :20/06/2003 Date de mise à jour :25/02/2004 13:56:08 Vu / téléchargé :16 903 / 844

Auteur : jesusonline

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


 Description

Ce code gere une photeque une sorte de diaporama, elle est simple d'emploi, il suffit de mettre des dossiers dans le dossier photeque et de mettre des images dedans c tt :)
C'est une version 2 car j'avais deja mis un truc du genre mais beaucoup moins perfectionné

20/06/03
Ce que fait le prog :
- Liste tous les dossiers contenues dans photeques et les mais le nom en guise de menu, pour qu'un dossier soit caché il suffit de mettre off en minuscule devant le nom
- Verifie la presence d'un sous dossier miniature dans chaque dossier et peut le creer.
- Verifie la presence et le bon format de ttes les miniatures, et peut créer les miniatures
- Permet d'afficher une popup avec l'image à l'interieur, plus un copyright, quelque soit l'image a afficher, l'image aura tj le meme nom et se situera dans /image/photo_rendu.jpg
- Ecrit un fichier de log quand une miniature est crée il se trouve a la racine de l'application sous le nom de mylog.log, peut aussi faire un log des erreurs, j'ai pas bien exploité le log, mais vous pourrez simplement créee une nouvelle ligne il suffit de mettre ecrirelog("le texte",["erreur"]) [erreur] seulement pour le log d'erreur

Ce qu'il reste a faire:
- retravailler le fichier popup_photo.aspx, il est peu voir pas commenté, et n'integre pas beaucoup de fonctions
- Pouvoir choisir dans la popup entre plusieurs tailles originales et tailles moyenne
- faire les logs au format xml
- Mettre des commentaires à l'interieur des photos et pouvoir ainsi les commentés
- Faire une page de configuration qui permettrait tous les reglages comme le nombre de vignette par page et les enregistrer en XML
- Refaire un peu le designe général

Bug (mineur) mais connue
- Les arrondis pour le nombre de page ne se font pas par exces
- Quand on crée les miniatures il se peut que les images affichés ne soit encore pas crées
  

Source

  • 'Il ya 4 fichiers en tout, deux pages html et leur codes correspondant,
  • ----------------phototeque.aspx----------------
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//FR">
  • <HTML>
  • <HEAD>
  • <title>WebForm1</title>
  • <META http-equiv="Content-Type" content="text/html; charset=windows-1252">
  • <meta name="vs_showGrid" content="True">
  • <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
  • <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
  • <meta name="vs_defaultClientScript" content="JavaScript">
  • <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  • </HEAD>
  • <body>
  • <form id="Form1" method="post" runat="server">
  • <table width="100%" cellpadding="0" cellspacing="0">
  • <asp:label id="lbl_erreur" runat="server" />
  • <tr>
  • <td height="102"><table width="100%">
  • <tr>
  • <td height="10"></td>
  • </tr>
  • <tr>
  • <td height="20" align="middle"><B>[</B>
  • <asp:repeater id="Repertoire" runat="server">
  • <ItemTemplate>
  • <asp:hyperlink id=hk text='<%# container.dataitem %>'
  • NavigateUrl='<%# request.ServerVariables("URL") + "?categorie=" + container.dataitem %>'
  • runat="server" />
  • </ItemTemplate>
  • <SeparatorTemplate>
  • |
  • </SeparatorTemplate>
  • </asp:repeater>
  • <B>]</B>
  • </td>
  • </tr>
  • <tr>
  • <td height="10"></td>
  • </tr>
  • <tr>
  • <td align="middle">
  • <asp:repeater id="RepeaterPage" runat="server">
  • <headertemplate>
  • <B>[</B>
  • </headertemplate>
  • <itemtemplate>
  • <asp:hyperlink id="Hyperlink1"
  • text='<%#container.dataitem%>'
  • NavigateUrl='<%# request.ServerVariables("URL") + "?categorie=" + request.QueryString("categorie") + "&page=" + container.dataitem %>'
  • runat="server" />
  • </itemtemplate>
  • <separatortemplate>
  • |
  • </separatortemplate>
  • <footertemplate>
  • <B>]</B>
  • </footertemplate>
  • </asp:repeater>
  • </td>
  • </tr>
  • <tr>
  • <td height="20"></td>
  • </tr>
  • </table>
  • <asp:datalist CellSpacing="4" ID="list1" ItemStyle-HorizontalAlign="center" ItemStyle-VerticalAlign="middle" runat="server" ShowFooter="true" ShowHeader="true" Width="100%" height="377px" RepeatDirection="Horizontal" RepeatColumns="4">
  • <itemtemplate>
  • <asp:hyperlink id="photo" ImageUrl='<%#Container.dataitem%>'
  • NavigateUrl=<%# "javascript:window.open('popup_photo.aspx?photo=" & Container.dataitem & "','voiture','menubar=0;scrollbars=0,resizable=0,toolbar=0');window.close()" %>
  • Width="140" Height="105" runat="server"
  • Target="_blank" />
  • </itemtemplate>
  • </asp:datalist>
  • <table width="100%">
  • <tr>
  • <td height="20" align="right"><asp:label id="IndicateurPage" runat="server"/></td>
  • </tr>
  • </table>
  • </td>
  • </tr>
  • </table>
  • </form>
  • </body>
  • </HTML>
  • =================================
  • =================================
  • ----------------popup_photo.aspx----------------
  • <%@ Page Language="vb" Debug="true" CodeBehind="popup_photo.aspx.vb" AutoEventWireup="false" Inherits="phototeque.PopupPhoto" trace="false"%>
  • <HTML>
  • <HEAD>
  • <title>Document sans titre</title>
  • <script language="JavaScript">
  • window.resizeTo(620,600);
  • </script>
  • </HEAD>
  • <body bgcolor="#00004a" topmargin="0" leftmargin="0">
  • <table width="100%">
  • <tr>
  • <td align="middle" height="50"><!--<img src="image/bandeau.JPG" width="300" height="50"/>--></td>
  • </tr>
  • <tr>
  • <td align="middle" valign="middle"><asp:image runat="server" ID="photo" Height="450" /></td>
  • </tr>
  • <tr>
  • <td align="middle" height="50"><!--<img src="image/bandeau.JPG" width="300" height="50"/>--></td>
  • </tr>
  • </table>
  • </body>
  • </HTML>
  • ==================================
  • ==================================
  • ----------------phototeque.aspx.vb----------------
  • Imports System.IO
  • Imports System.Drawing.Drawing2D
  • Imports System.Drawing
  • Imports System.Drawing.Imaging
  • Public Class phototeque
  • Inherits System.Web.UI.Page
  • #Region " Code généré par le Concepteur Web Form "
  • Protected WithEvents repeaterpage As System.Web.UI.WebControls.Repeater
  • Protected WithEvents Repertoire As System.Web.UI.WebControls.Repeater
  • Protected WithEvents list1 As System.Web.UI.WebControls.DataList
  • Protected WithEvents IndicateurPage As System.Web.UI.WebControls.Label
  • 'Cet appel est requis par le Concepteur Web Form.
  • <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  • End Sub
  • 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
  • #Region " Declaration de pas mal de variables"
  • 'declaration des variables pour les méthodes générique
  • Private AccesLog As Boolean = False
  • Private AccessErreurLog As Boolean = False
  • 'declaration des variables pour le controle des images
  • Public ArrayListDossier As New ArrayList()
  • Private ArrayListFichierParent As New ArrayList()
  • Private ArrayListFichierMini As New ArrayList()
  • Public Categorie As String
  • Public PhotoMiniWidth As Integer = 140
  • Public PhotoMiniHeight As Integer = 105
  • 'declaration des variables pour afficher le page
  • Public NbColonne As Integer = 4
  • Public NbLigne As Integer = 2
  • Public NbImage As Integer = NbColonne * NbLigne
  • Private PageAffiche As Integer ' page en cours
  • Private NbFichierMini As Integer ' nb de miniature ds le dossier
  • Private PageAfficheMax As Integer ' nb de page max
  • #End Region
  • #Region " Fonctions et méthodes géneriques"
  • Public Sub EcrireLog(ByVal texte As String, Optional ByVal Fichier As String = "mylog")
  • Dim LogStream As New StreamWriter(Fichier & ".log", True)
  • If AccesLog = False And Fichier = "mylog" Then
  • LogStream.WriteLine()
  • LogStream.WriteLine("--- Debut d'une nouvelle entrée de log à " & Now() & " ---")
  • AccesLog = True
  • End If
  • If AccessErreurLog = False And Fichier = "erreur" Then
  • LogStream.WriteLine()
  • LogStream.WriteLine("--- Debut d'une nouvelle entrée de log à " & Now() & " ---")
  • AccessErreurLog = True
  • End If
  • LogStream.WriteLine(Now() & " " & texte)
  • LogStream.Close()
  • End Sub
  • #End Region
  • #Region " Fonctions et méthodes pour controler les images"
  • Private Sub PreparationDossier()
  • If Not Directory.Exists(Server.MapPath("phototeque/")) Then
  • EcrireLog("Il n'y avait aucun dossier phototèque on a tt abandonné", "erreur")
  • Exit Sub
  • End If
  • Dim ArrayDossier As Array
  • ArrayDossier = Directory.GetDirectories(Server.MapPath("phototeque/"))
  • Dim Dossier As String
  • For Each Dossier In ArrayDossier
  • If Mid(Path.GetFileNameWithoutExtension(Dossier), 1, 3) <> "off" Then
  • ArrayListDossier.Add(Path.GetFileName(Dossier))
  • End If
  • Next
  • Repertoire.DataSource = ArrayListDossier
  • Repertoire.DataBind()
  • Repertoire.Dispose()
  • End Sub ' Finit & pas commenté :/
  • Private Sub VerificationDossier(ByVal Dossier As String)
  • ' On verifie qu'il existe un sous dossier miniature, sinon on le crée
  • If Not Directory.Exists(Server.MapPath("phototeque") & Path.DirectorySeparatorChar _
  • & Dossier & Path.DirectorySeparatorChar & _
  • "miniature") Then
  • Directory.CreateDirectory(Server.MapPath("phototeque") & _
  • Path.DirectorySeparatorChar & Dossier & _
  • Path.DirectorySeparatorChar & "miniature")
  • EcrireLog("Creation d'un dossier miniature dans" & Server.MapPath("phototeque") & Path.DirectorySeparatorChar & Dossier)
  • Exit Sub
  • End If
  • ' Ici on verifie que toutes les images presntes
  • ' dans le sous dossier miniature correspondant
  • ' et on verifie aussi la taille des miniatures
  • ' On met toutes les photos (originale) dans un arraylist
  • Dim ArrayFichierParent As Array
  • ArrayFichierParent = Directory.GetFiles(Server.MapPath("phototeque") & _
  • Path.DirectorySeparatorChar & Dossier, "*.jpg")
  • ArrayListFichierParent.AddRange(ArrayFichierParent)
  • ' On met toutes les photos (miniature) dans un arraylist
  • Dim ArrayFichierMini As Array
  • ArrayFichierMini = Directory.GetFiles(Server.MapPath("phototeque") & _
  • Path.DirectorySeparatorChar & Dossier & _
  • Path.DirectorySeparatorChar & "miniature", "*.jpg")
  • ArrayListFichierMini.AddRange(ArrayFichierMini)
  • ' On range les deux arraylist dans l'ordre alphabetique pour que ce soit plus rapide
  • ArrayListFichierMini.Sort()
  • ArrayListFichierParent.Sort()
  • ' Pour tous les fichiers contenues dans le dossier parent
  • Dim FichierParent As String
  • For Each FichierParent In ArrayListFichierParent
  • ' On regarde s'il correspond dans le sous dossier miniature
  • Dim FichierMini As String
  • Dim i As Integer = 0 ' simple counter pour pouvoir supprimer ensuite le fichier dans l'array (gain de perf)
  • Dim FichierModifie As Boolean = False ' pour savoir s'il est bon ou pas
  • For Each FichierMini In ArrayListFichierMini
  • ' C'est à cet undroit qu'on verifie que les deux fichiers
  • ' ont le meme nom et qu'il est a la bonne taille
  • If Path.GetFileNameWithoutExtension(FichierMini) = Path.GetFileNameWithoutExtension(FichierParent) _
  • And VerificationTaille(FichierMini) = True Then
  • FichierModifie = True
  • ' Une fois que le fichier est trouvé on peut l'enlever de la liste
  • ' et a la fin de tous les test l'araylist permet de voir ttes les jpeg inutiles
  • ArrayListFichierMini.RemoveAt(i)
  • Exit For
  • End If
  • i += 1
  • Next
  • ' Si le fichier est pas bon on l'emmene se faire refaire ;)
  • If FichierModifie = False Then
  • CorrectionTaille(FichierParent)
  • End If
  • Next
  • End Sub ' Finit & commenté :)
  • Public Function VerificationTaille(ByVal Photo As String) As Boolean
  • ' On crée un bitmap avec la photo
  • Dim BmpPhoto As New Bitmap(Photo)
  • ' On verifie la taille du bitmap
  • If BmpPhoto.Width >= PhotoMiniWidth And BmpPhoto.Height = PhotoMiniHeight Then
  • VerificationTaille = True
  • Else
  • VerificationTaille = False
  • End If
  • ' On libere la photo
  • BmpPhoto.Dispose()
  • End Function ' Finit & commenté :)
  • Private Sub CorrectionTaille(ByVal Photo As String)
  • Dim PhotominiPath As String
  • PhotominiPath = Server.MapPath("phototeque") & Path.DirectorySeparatorChar & _
  • Categorie & Path.DirectorySeparatorChar & _
  • "miniature" & Path.DirectorySeparatorChar & _
  • Path.GetFileNameWithoutExtension(Photo) & ".jpg"
  • Dim BmpPhoto As New Bitmap(Photo)
  • Dim BmpPhotoMini As New Bitmap(PhotoMiniWidth, PhotoMiniHeight)
  • Dim graphicsPhotoMini As Graphics = Graphics.FromImage(BmpPhotoMini)
  • graphicsPhotoMini.DrawImage(BmpPhoto, _
  • New Rectangle(0, 0, PhotoMiniWidth, PhotoMiniHeight), _
  • 0, 0, BmpPhoto.Width, BmpPhoto.Height, _
  • System.Drawing.GraphicsUnit.Pixel)
  • BmpPhoto.Dispose()
  • graphicsPhotoMini.Dispose()
  • If File.Exists(PhotominiPath) Then
  • File.Delete(PhotominiPath)
  • End If
  • BmpPhotoMini.Save(PhotominiPath, System.Drawing.Imaging.ImageFormat.Jpeg)
  • BmpPhotoMini.Dispose()
  • EcrireLog("Creation de la miniature de " & Path.GetFileNameWithoutExtension(Photo) & " réalisé avec succé")
  • End Sub ' Finit & pas commenté :#End Region
  • #Region " Fonctions et méthodes pour afficher la page"
  • Private Sub AfficherMiniature(ByVal NumeroPage As Integer)
  • ' On crée une variable du dossier parents au cas ou
  • ' il y est des photos inutiles dans le sous dossier
  • Dim PhotominiPath As String
  • PhotominiPath = Server.MapPath("phototeque") & Path.DirectorySeparatorChar & _
  • Categorie & Path.DirectorySeparatorChar
  • ' On nettoie cette ArrayList car je vais m'en resservir
  • ArrayListFichierMini.Clear()
  • ' On met ttes les images dans un array
  • Dim ArrayFichierNormal As Array
  • ArrayFichierNormal = Directory.GetFiles(PhotominiPath, "*.jpg")
  • Dim count As Integer = 0 ' un petit counter
  • Dim NumeroImage As Integer = 0 ' pour connaitre a quelle image on en est
  • Dim FichierNormal As String
  • For Each FichierNormal In ArrayFichierNormal
  • ' On commence a remplir ArrayListFichierMini seulement à partir du N° de l'image
  • If NumeroImage >= (NumeroPage - 1) * NbImage Then
  • ' On fais un replace car Path.DirectorySeparatorChar est un \ ' ensuite je passe cette variable par querystring + javascript
  • ' et ca m'enleve ca \\ donc je remplace par /
  • ArrayListFichierMini.Add(Replace(PhotominiPath & "miniature" & _
  • Path.DirectorySeparatorChar & _
  • Path.GetFileNameWithoutExtension(FichierNormal) & _
  • ".jpg", "\\", "/"))
  • count += 1
  • ' Si il y a suffisemment d'image on arrete
  • If count >= NbImage Then
  • Exit For
  • End If
  • End If
  • NumeroImage += 1
  • Next
  • ' On configure la liste
  • list1.RepeatDirection = RepeatDirection.Horizontal
  • list1.RepeatColumns = NbColonne
  • list1.DataSource = ArrayListFichierMini
  • list1.DataBind()
  • list1.Dispose()
  • End Sub ' Finit & commenté :)
  • Private Sub AficherNbPAge()
  • ' On crée une variable du dossier parents au cas ou
  • ' il y est des photos inutiles dans le sous dossier
  • Dim PhotominiPath As String
  • PhotominiPath = Server.MapPath("phototeque") & Path.DirectorySeparatorChar & _
  • Categorie & Path.DirectorySeparatorChar
  • ' On nettoie cette ArrayList car je vais m'en resservir
  • ArrayListFichierMini.Clear()
  • ' On met ttes les images dans un array
  • Dim ArrayFichierNormal As Array
  • ArrayFichierNormal = Directory.GetFiles(PhotominiPath, "*.jpg")
  • ' On integere l'Array dans l'ArrayList
  • ArrayListFichierMini.AddRange(ArrayFichierNormal)
  • ' On va compter le nombre d'image
  • NbFichierMini = ArrayListFichierMini.Count
  • ' On va definir le nombre de page necessaire
  • Dim NbPage As Integer
  • NbPage = (NbFichierMini / NbImage) 'Math.Ceiling
  • 'On crée un arraylist avec ttes les pages necessaires
  • Dim ArrayListNbPage As New ArrayList()
  • Dim i As Integer
  • For i = 1 To NbPage
  • ArrayListNbPage.Add(i.ToString)
  • Next
  • ' On configure le repeater
  • repeaterpage.DataSource = ArrayListNbPage
  • repeaterpage.DataBind()
  • repeaterpage.Dispose()
  • End Sub
  • #End Region
  • #Region " Evenements liés aux fonctionnement de la page"
  • Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • 'Definit le repertoire dans lequel se trouve la page
  • Directory.SetCurrentDirectory(Server.MapPath(""))
  • ' Definit dans quelle categorie nous nous trouvons
  • Categorie = Request.QueryString("categorie")
  • ' Permet d'affichier la liste des dossiers que l'on pourra voir dans la phototeque
  • PreparationDossier()
  • ' Si aucune categorie est choisis on peut indiquer une erreur
  • ' et on redirige vers la premiere categorie de l'arraylist
  • If Categorie = "" Then
  • Categorie = ArrayListDossier.Item(0)
  • End If
  • ' Trie l'arraylist pour pouvoir faire une recherche
  • ' et on recherche si il existe pas,
  • ' on redirige vers la premiere categorie de l'arraylist
  • ArrayListDossier.Sort()
  • If ArrayListDossier.BinarySearch(Categorie) < 0 Then
  • Categorie = ArrayListDossier.Item(0)
  • End If
  • ' Verifie si le dossier miniature existe sinon le crée
  • VerificationDossier(Categorie)
  • ' Permet d'afficher la liste des pages
  • AficherNbPAge()
  • ' Verifie que le numero de page indiqué soit correcte,
  • ' S'il n'y en a pas on prend la premiere
  • ' et on affiche les miniatures
  • PageAffiche = Request.QueryString("page")
  • Try
  • PageAffiche = CInt(PageAffiche)
  • Catch
  • PageAffiche = 1
  • Finally
  • '/!\\ Aucun arrondit a revoir pour arrondit par exces
  • PageAfficheMax = NbFichierMini / NbImage
  • If PageAffiche <= 0 Or PageAffiche > PageAfficheMax Then
  • PageAffiche = 1
  • End If
  • AfficherMiniature(PageAffiche)
  • End Try
  • ' Remplit IndicateurPage pour savoir où on en est
  • IndicateurPage.Text = "page N° " & PageAffiche & " sur " & PageAfficheMax
  • End Sub
  • #End Region
  • End Class
  • ===================================
  • ===================================
  • ----------------popup_photo.aspx.vb----------------
  • Imports System.Drawing.Drawing2D
  • Imports System.IO
  • Imports System.Drawing
  • Public Class PopupPhoto
  • Inherits System.Web.UI.Page
  • Protected WithEvents photo As System.Web.UI.WebControls.Image
  • #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
  • 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
  • Public nom_photo As String
  • Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • Trace.Warn(Request.QueryString("photo"))
  • DessineStats()
  • photo.ImageUrl = "image\\photo_rendu.jpg"
  • End Sub
  • Sub DessineStats()
  • Dim myDirectoryInfo As DirectoryInfo = Directory.GetParent(Request.QueryString("photo"))
  • Dim newImage As System.Drawing.Image = _
  • System.Drawing.Image.FromFile( _
  • myDirectoryInfo.Parent.FullName & _
  • Path.DirectorySeparatorChar & _
  • Path.GetFileName(Request.QueryString("photo")))
  • Dim hauteur, largeur As Integer
  • hauteur = 450
  • largeur = 600
  • Dim mB As New Bitmap(newImage, largeur, hauteur)
  • Dim g As Graphics = Graphics.FromImage(mB)
  • g.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
  • 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)
  • mB.Save("image" & Path.DirectorySeparatorChar & "photo_rendu.jpg", Imaging.ImageFormat.Jpeg)
  • mB.Dispose()
  • g.Dispose()
  • newImage.Dispose()
  • End Sub
  • End Class
  • ============================
  • ============================
  • ============================
'Il ya 4 fichiers en tout, deux pages html et leur codes correspondant, 

----------------phototeque.aspx----------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//FR">
<HTML>
	<HEAD>
		<title>WebForm1</title>
		<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
		<meta name="vs_showGrid" content="True">
		<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
		<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
		<meta name="vs_defaultClientScript" content="JavaScript">
		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
	</HEAD>
	<body>
		<form id="Form1" method="post" runat="server">
			<table width="100%" cellpadding="0" cellspacing="0">
				<asp:label id="lbl_erreur" runat="server" />
				<tr>
					<td height="102"><table width="100%">
							<tr>
								<td height="10"></td>
							</tr>
							<tr>
								<td height="20" align="middle"><B>[</B>
									<asp:repeater id="Repertoire" runat="server">
										<ItemTemplate>
											<asp:hyperlink id=hk text='<%# container.dataitem %>'
										NavigateUrl='<%# request.ServerVariables("URL") + "?categorie=" + container.dataitem %>' 
										runat="server" />
										</ItemTemplate>
										<SeparatorTemplate>
											|
										</SeparatorTemplate>
									</asp:repeater>
									<B>]</B>
								</td>
							</tr>
							<tr>
								<td height="10"></td>
							</tr>
							<tr>
								<td align="middle">
									<asp:repeater id="RepeaterPage" runat="server">
										<headertemplate>
											<B>[</B>
										</headertemplate>
										<itemtemplate>
											<asp:hyperlink id="Hyperlink1" 
										text='<%#container.dataitem%>' 
										NavigateUrl='<%# request.ServerVariables("URL") + "?categorie=" + request.QueryString("categorie") + "&page=" + container.dataitem %>' 
										runat="server" />
										</itemtemplate>
										<separatortemplate>
											|
										</separatortemplate>
										<footertemplate>
											<B>]</B>
										</footertemplate>
									</asp:repeater>
								</td>
							</tr>
							<tr>
								<td height="20"></td>
							</tr>
						</table>
						<asp:datalist CellSpacing="4" ID="list1" ItemStyle-HorizontalAlign="center" ItemStyle-VerticalAlign="middle" runat="server" ShowFooter="true" ShowHeader="true" Width="100%" height="377px" RepeatDirection="Horizontal" RepeatColumns="4">
							<itemtemplate>
								<asp:hyperlink id="photo" ImageUrl='<%#Container.dataitem%>' 
										NavigateUrl=<%# "javascript:window.open('popup_photo.aspx?photo=" & Container.dataitem & "','voiture','menubar=0;scrollbars=0,resizable=0,toolbar=0');window.close()" %>
										Width="140" Height="105" runat="server" 
										Target="_blank" />
							</itemtemplate>
						</asp:datalist>
						<table width="100%">
							<tr>
								<td height="20" align="right"><asp:label id="IndicateurPage" runat="server"/></td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
		</form>
	</body>
</HTML>

=================================
=================================

----------------popup_photo.aspx----------------

<%@ Page Language="vb" Debug="true" CodeBehind="popup_photo.aspx.vb" AutoEventWireup="false" Inherits="phototeque.PopupPhoto" trace="false"%>
<HTML>
	<HEAD>
		<title>Document sans titre</title>
		<script language="JavaScript">
window.resizeTo(620,600);
		</script>
	</HEAD>
	<body bgcolor="#00004a" topmargin="0" leftmargin="0">
		<table width="100%">
			<tr>
				<td align="middle" height="50"><!--<img src="image/bandeau.JPG" width="300" height="50"/>--></td>
			</tr>
			<tr>
				<td align="middle" valign="middle"><asp:image runat="server" ID="photo" Height="450" /></td>
			</tr>
			<tr>
				<td align="middle" height="50"><!--<img src="image/bandeau.JPG" width="300" height="50"/>--></td>
			</tr>
		</table>
	</body>
</HTML>

==================================
==================================

----------------phototeque.aspx.vb----------------

Imports System.IO
Imports System.Drawing.Drawing2D
Imports System.Drawing
Imports System.Drawing.Imaging

Public Class phototeque
    Inherits System.Web.UI.Page

#Region " Code généré par le Concepteur Web Form "

    Protected WithEvents repeaterpage As System.Web.UI.WebControls.Repeater
    Protected WithEvents Repertoire As System.Web.UI.WebControls.Repeater
    Protected WithEvents list1 As System.Web.UI.WebControls.DataList
    Protected WithEvents IndicateurPage As System.Web.UI.WebControls.Label

    'Cet appel est requis par le Concepteur Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    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
#Region " Declaration de pas mal de variables"

    'declaration des variables pour les méthodes générique

    Private AccesLog As Boolean = False
    Private AccessErreurLog As Boolean = False

    'declaration des variables pour le controle des images

    Public ArrayListDossier As New ArrayList()
    Private ArrayListFichierParent As New ArrayList()
    Private ArrayListFichierMini As New ArrayList()

    Public Categorie As String

    Public PhotoMiniWidth As Integer = 140
    Public PhotoMiniHeight As Integer = 105

    'declaration des variables pour afficher le page

    Public NbColonne As Integer = 4
    Public NbLigne As Integer = 2
    Public NbImage As Integer = NbColonne * NbLigne
    Private PageAffiche As Integer ' page en cours
    Private NbFichierMini As Integer ' nb de miniature ds le dossier
    Private PageAfficheMax As Integer ' nb de page max

#End Region
#Region " Fonctions et méthodes géneriques"

    Public Sub EcrireLog(ByVal texte As String, Optional ByVal Fichier As String = "mylog")

        Dim LogStream As New StreamWriter(Fichier & ".log", True)
        If AccesLog = False And Fichier = "mylog" Then
            LogStream.WriteLine()
            LogStream.WriteLine("--- Debut d'une nouvelle entrée de log à " & Now() & " ---")
            AccesLog = True
        End If
        If AccessErreurLog = False And Fichier = "erreur" Then
            LogStream.WriteLine()
            LogStream.WriteLine("--- Debut d'une nouvelle entrée de log à " & Now() & " ---")
            AccessErreurLog = True
        End If

        LogStream.WriteLine(Now() & "    " & texte)
        LogStream.Close()

    End Sub

#End Region
#Region " Fonctions et méthodes pour controler les images"

    Private Sub PreparationDossier()

        If Not Directory.Exists(Server.MapPath("phototeque/")) Then
            EcrireLog("Il n'y avait aucun dossier phototèque on a tt abandonné", "erreur")
            Exit Sub
        End If

        Dim ArrayDossier As Array
        ArrayDossier = Directory.GetDirectories(Server.MapPath("phototeque/"))

        Dim Dossier As String
        For Each Dossier In ArrayDossier
            If Mid(Path.GetFileNameWithoutExtension(Dossier), 1, 3) <> "off" Then
                ArrayListDossier.Add(Path.GetFileName(Dossier))
            End If
        Next

        Repertoire.DataSource = ArrayListDossier
        Repertoire.DataBind()
        Repertoire.Dispose()

    End Sub ' Finit & pas commenté :/
    Private Sub VerificationDossier(ByVal Dossier As String)

        ' On verifie qu'il existe un sous dossier miniature, sinon on le crée
        If Not Directory.Exists(Server.MapPath("phototeque") & Path.DirectorySeparatorChar _
                                & Dossier & Path.DirectorySeparatorChar & _
                                "miniature") Then
            Directory.CreateDirectory(Server.MapPath("phototeque") & _
                                Path.DirectorySeparatorChar & Dossier & _
                                Path.DirectorySeparatorChar & "miniature")
            EcrireLog("Creation d'un dossier miniature dans" & Server.MapPath("phototeque") & Path.DirectorySeparatorChar & Dossier)
            Exit Sub
        End If

        ' Ici on verifie que toutes les images presntes
        ' dans le sous dossier miniature correspondant
        ' et on verifie aussi la taille des miniatures         

        ' On met toutes les photos (originale) dans un arraylist
        Dim ArrayFichierParent As Array
        ArrayFichierParent = Directory.GetFiles(Server.MapPath("phototeque") & _
                                Path.DirectorySeparatorChar & Dossier, "*.jpg")
        ArrayListFichierParent.AddRange(ArrayFichierParent)

        ' On met toutes les photos (miniature) dans un arraylist
        Dim ArrayFichierMini As Array
        ArrayFichierMini = Directory.GetFiles(Server.MapPath("phototeque") & _
                                Path.DirectorySeparatorChar & Dossier & _
                                Path.DirectorySeparatorChar & "miniature", "*.jpg")
        ArrayListFichierMini.AddRange(ArrayFichierMini)

        ' On range les deux arraylist dans l'ordre alphabetique pour que ce soit plus rapide
        ArrayListFichierMini.Sort()
        ArrayListFichierParent.Sort()

        ' Pour tous les fichiers contenues dans le dossier parent
        Dim FichierParent As String
        For Each FichierParent In ArrayListFichierParent

            ' On regarde s'il correspond dans le sous dossier miniature
            Dim FichierMini As String
            Dim i As Integer = 0 ' simple counter pour pouvoir supprimer ensuite le fichier dans l'array (gain de perf)
            Dim FichierModifie As Boolean = False ' pour savoir s'il est bon ou pas
            For Each FichierMini In ArrayListFichierMini
                ' C'est à cet undroit qu'on verifie que les deux fichiers 
                ' ont le meme nom et qu'il est a la bonne taille
                If Path.GetFileNameWithoutExtension(FichierMini) = Path.GetFileNameWithoutExtension(FichierParent) _
                                And VerificationTaille(FichierMini) = True Then
                    FichierModifie = True
                    ' Une fois que le fichier est trouvé on peut l'enlever de la liste
                    ' et a la fin de tous les test l'araylist permet de voir ttes les jpeg inutiles
                    ArrayListFichierMini.RemoveAt(i)
                    Exit For
                End If

                i += 1
            Next

            ' Si le fichier est pas bon on l'emmene se faire refaire ;)
            If FichierModifie = False Then
                CorrectionTaille(FichierParent)
            End If

        Next
    End Sub ' Finit & commenté :)
    Public Function VerificationTaille(ByVal Photo As String) As Boolean

        ' On crée un bitmap avec la photo
        Dim BmpPhoto As New Bitmap(Photo)

        ' On verifie la taille du bitmap
        If BmpPhoto.Width >= PhotoMiniWidth And BmpPhoto.Height = PhotoMiniHeight Then
            VerificationTaille = True
        Else
            VerificationTaille = False
        End If
        ' On libere la photo
        BmpPhoto.Dispose()

    End Function ' Finit & commenté :)
    Private Sub CorrectionTaille(ByVal Photo As String)

        Dim PhotominiPath As String
        PhotominiPath = Server.MapPath("phototeque") & Path.DirectorySeparatorChar & _
                                Categorie & Path.DirectorySeparatorChar & _
                                "miniature" & Path.DirectorySeparatorChar & _
                                Path.GetFileNameWithoutExtension(Photo) & ".jpg"

        Dim BmpPhoto As New Bitmap(Photo)
        Dim BmpPhotoMini As New Bitmap(PhotoMiniWidth, PhotoMiniHeight)
        Dim graphicsPhotoMini As Graphics = Graphics.FromImage(BmpPhotoMini)
        graphicsPhotoMini.DrawImage(BmpPhoto, _
                                New Rectangle(0, 0, PhotoMiniWidth, PhotoMiniHeight), _
                                0, 0, BmpPhoto.Width, BmpPhoto.Height, _
                                System.Drawing.GraphicsUnit.Pixel)
        BmpPhoto.Dispose()
        graphicsPhotoMini.Dispose()

        If File.Exists(PhotominiPath) Then
            File.Delete(PhotominiPath)
        End If

        BmpPhotoMini.Save(PhotominiPath, System.Drawing.Imaging.ImageFormat.Jpeg)
        BmpPhotoMini.Dispose()

        EcrireLog("Creation de la miniature de " & Path.GetFileNameWithoutExtension(Photo) & " réalisé avec succé")
    End Sub ' Finit & pas commenté :#End Region
#Region " Fonctions et méthodes pour afficher la page"

    Private Sub AfficherMiniature(ByVal NumeroPage As Integer)

        ' On crée une variable du dossier parents au cas ou 
        ' il y est des photos inutiles dans le sous dossier
        Dim PhotominiPath As String
        PhotominiPath = Server.MapPath("phototeque") & Path.DirectorySeparatorChar & _
                                Categorie & Path.DirectorySeparatorChar

        ' On nettoie cette ArrayList car je vais m'en resservir
        ArrayListFichierMini.Clear()

        ' On  met ttes les images dans un array
        Dim ArrayFichierNormal As Array
        ArrayFichierNormal = Directory.GetFiles(PhotominiPath, "*.jpg")

        Dim count As Integer = 0 ' un petit counter
        Dim NumeroImage As Integer = 0 ' pour connaitre a quelle image on en est
        Dim FichierNormal As String
        For Each FichierNormal In ArrayFichierNormal
            ' On commence a remplir ArrayListFichierMini seulement à partir du N° de l'image
            If NumeroImage >= (NumeroPage - 1) * NbImage Then
                ' On fais un replace car Path.DirectorySeparatorChar est un \                ' ensuite je passe cette variable par querystring + javascript
                ' et ca m'enleve ca \\ donc je remplace par /
                ArrayListFichierMini.Add(Replace(PhotominiPath & "miniature" & _
                                    Path.DirectorySeparatorChar & _
                                    Path.GetFileNameWithoutExtension(FichierNormal) & _
                                    ".jpg", "\\", "/"))
                count += 1
                ' Si il y a suffisemment d'image on arrete
                If count >= NbImage Then
                    Exit For
                End If
            End If
            NumeroImage += 1
        Next

        ' On configure la liste
        list1.RepeatDirection = RepeatDirection.Horizontal
        list1.RepeatColumns = NbColonne
        list1.DataSource = ArrayListFichierMini
        list1.DataBind()
        list1.Dispose()

    End Sub ' Finit & commenté :)
    Private Sub AficherNbPAge()

        ' On crée une variable du dossier parents au cas ou 
        ' il y est des photos inutiles dans le sous dossier
        Dim PhotominiPath As String
        PhotominiPath = Server.MapPath("phototeque") & Path.DirectorySeparatorChar & _
                                Categorie & Path.DirectorySeparatorChar

        ' On nettoie cette ArrayList car je vais m'en resservir
        ArrayListFichierMini.Clear()

        ' On  met ttes les images dans un array
        Dim ArrayFichierNormal As Array
        ArrayFichierNormal = Directory.GetFiles(PhotominiPath, "*.jpg")

        ' On integere l'Array dans l'ArrayList
        ArrayListFichierMini.AddRange(ArrayFichierNormal)

        ' On va compter le nombre d'image
        NbFichierMini = ArrayListFichierMini.Count

        ' On va definir le nombre de page necessaire
        Dim NbPage As Integer
        NbPage = (NbFichierMini / NbImage) 'Math.Ceiling

        'On crée un arraylist avec ttes les pages necessaires
        Dim ArrayListNbPage As New ArrayList()
        Dim i As Integer
        For i = 1 To NbPage
            ArrayListNbPage.Add(i.ToString)
        Next

        ' On configure le repeater
        repeaterpage.DataSource = ArrayListNbPage
        repeaterpage.DataBind()
        repeaterpage.Dispose()

    End Sub
#End Region
#Region " Evenements liés aux fonctionnement de la page"

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'Definit le repertoire dans lequel se trouve la page
        Directory.SetCurrentDirectory(Server.MapPath(""))

        ' Definit dans quelle categorie nous nous trouvons
        Categorie = Request.QueryString("categorie")

        ' Permet d'affichier la liste des dossiers que l'on pourra voir dans la phototeque
        PreparationDossier()

        ' Si aucune categorie est choisis on peut indiquer une erreur 
        ' et on redirige vers la premiere categorie de l'arraylist
        If Categorie = "" Then
            Categorie = ArrayListDossier.Item(0)
        End If

        ' Trie l'arraylist pour pouvoir faire une recherche
        ' et on recherche si il existe pas,
        ' on redirige vers la premiere categorie de l'arraylist
        ArrayListDossier.Sort()
        If ArrayListDossier.BinarySearch(Categorie) < 0 Then
            Categorie = ArrayListDossier.Item(0)
        End If

        ' Verifie si le dossier miniature existe sinon le crée
        VerificationDossier(Categorie)

        ' Permet d'afficher la liste des pages
        AficherNbPAge()

        ' Verifie que le numero de page indiqué soit correcte,
        ' S'il n'y en a pas on prend la premiere
        ' et on affiche les miniatures
        PageAffiche = Request.QueryString("page")
        Try
            PageAffiche = CInt(PageAffiche)
        Catch
            PageAffiche = 1
        Finally
            '/!\\ Aucun arrondit a revoir pour arrondit par exces
            PageAfficheMax = NbFichierMini / NbImage
            If PageAffiche <= 0 Or PageAffiche > PageAfficheMax Then
                PageAffiche = 1
            End If
            AfficherMiniature(PageAffiche)
        End Try

        ' Remplit IndicateurPage pour savoir où on en est
        IndicateurPage.Text = "page N° " & PageAffiche & " sur " & PageAfficheMax

    End Sub

#End Region

End Class

===================================
===================================

----------------popup_photo.aspx.vb----------------

Imports System.Drawing.Drawing2D
Imports System.IO
Imports System.Drawing

Public Class PopupPhoto
    Inherits System.Web.UI.Page
    Protected WithEvents photo As System.Web.UI.WebControls.Image

#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

    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
    Public nom_photo As String

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Trace.Warn(Request.QueryString("photo"))
        DessineStats()
        photo.ImageUrl = "image\\photo_rendu.jpg"
    End Sub

    Sub DessineStats()

        Dim myDirectoryInfo As DirectoryInfo = Directory.GetParent(Request.QueryString("photo"))

        Dim newImage As System.Drawing.Image = _
                    System.Drawing.Image.FromFile( _
                    myDirectoryInfo.Parent.FullName & _
                    Path.DirectorySeparatorChar & _
                    Path.GetFileName(Request.QueryString("photo")))

        Dim hauteur, largeur As Integer
        hauteur = 450
        largeur = 600

        Dim mB As New Bitmap(newImage, largeur, hauteur)
        Dim g As Graphics = Graphics.FromImage(mB)
        g.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
        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)
        mB.Save("image" & Path.DirectorySeparatorChar & "photo_rendu.jpg", Imaging.ImageFormat.Jpeg)
        mB.Dispose()
        g.Dispose()
        newImage.Dispose()
    End Sub
End Class


============================
============================
============================

 Conclusion

Si vous trouvez des bugs dites le moi, si vous avez des idées, ou si vous avez modifié le code dites le moi aussi.
Pour l'installer, il suffit de dezipper et de créer une aplication pour le dossier, il vous faut aussi les droit d'ecriture (il me semble), sinon G essayé de laisser le code assez comprehensible, j'ai essayé de bien le commenté.
G changé de version de framework en cours de developement v1.0.3705 ==&gt; v1.1.4322 mais je pense que l'application reste compatible avec la framework 1.1 :)  

apparemment le zip fonctionne pas, pour le faire fonctionner, il ne faut pas ouvrir le .sln mais le .vbproj puis ecraser le sln apres, normalement ca marche, si qqn sait comment faire pour ziper un projet web je suis preneur ;)


--------------------------------------------- -------------------
Comme il y avait quelques problèmes pour l'installation je vous ai mis un fichier MSI qui vous fait tous, vous pouvez le trouver ici : http://jesusonline.int.webmatrixhosting.net/Downlo ad/Setup2.msi (400ko) il suffit juste de le lancer et le projet s'installe sur votre serveur et configure IIS :)


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 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 proffial le 04/07/2003 11:54:53

Salut,

je cherche a faire un truc qui a l'air tout bete, c'est a dire:

la création de miniature d'image a l'aide d'ASP sans avoir a ajouter de composants ...

y'a pas bcp de sources la dessu, voir meme pas du tout ...

Je suis tombé sur ta source, et alors la, je pige rien
y'a un seul fichier .aspx
et puis tout plein d'autres extentions
tes fichiers portent tous quasiment le meme nom,
les commentaires j'en vois pas,
...
en plus qd je me connecte a l'adress http ..... phototeque.aspx
y'a un bug.

Bref, t'es sur de ne pas t'etre planté de sources ?

et si quelqu un avait un element juste pour compresser des images, cela m'interresserait enormement ;)
le reve serait une fonction
compression( chemin d'origine, chemin final, type de compression, hauteur, largeur ) ...

Tu voye la question posée a l'air toute conne, mais si tu pouvais m'indiquer ou il faut concentrer ces efforts dans ton code, afin d'extraire cela, ce serait super mega cool

Thanks a lot

@lph

Commentaire de jesusonline le 04/07/2003 12:56:05 administrateur CS

J'ai verifié mon zip et il est bon, mais si tu veux l'utiliser il faut que tu es d'installer la framework.net car c'est une source .net. Pour ton exemple, ttes les autres extensions sont des extensions liès a VS.net
Pour ton exemple il est à peu pres expliqué dans le fichier popup_photo.aspx, et le code se trouve dans popup_photo.aspx.vb mais ce code n'est pas compatible asp 3.0

Pour ton pb, je crois que la fonction de reve existe regarde ici http://www.c2i.fr/code.aspx?IDCode=503 C assez complet mais C une application window en C#

J'espere que j'aurais pu t'aider, j'essaierai de mettre un lien vers un exemple de cette source bientot

@+

Commentaire de proffial le 04/07/2003 14:18:51

je te remercie pour cette petite mine d'information ;)

moi même j'ai trouvé des sources que je suis en train de décortiquer,
et notamment

http://www.aspfr.com/article.aspx?Val=515

du peu que j'ai vu, cette source est pas trop mal.
elle comprend:
- un upload qui fonctionne apparemment sans composant ( puisqu il marche chez moi et je ne crois pas avoir de composant spécifiques d'installé )
- la gestion d'une galerie photo avec des vignettes...

l'application tourne en ASP / ACCESS

ASP/ ACCESS c'est vraiment pas mon dada, PHP MySQL reste a mon point de vue plus puissant, car les sources sont tout de memes plus nombreuses sur les sujet tels que les galeries photos forum et autres ..

Enfin bon, je suis super content que des personnes comme toi mette en ligne ces applications . Puisque certaines grandes entreprises sont pro MICROSOFT, il faut donc faire avec :)

Dans tous les cas je te remercie pour ton aide,

et surement a très bientot avec la diffusion de sources ;)

PS sinon la prochaine foi que tu code, essaye d'éviter d'avoir des fichiers qui portent tous le même nom.
Toi tu connais ton code, mais il est vraiment difficile de se plonger dans le tiens dans un premier temps ...

Enfin a chaque foi que des connexions a une base sont effectuées, il faut essayer d'utiliser un include, pour n'avoir qu'un seul fichier a configurer,
pour finir ce serait super cool de ne faire que des passages par référence et non des passages par adresse, ( sinon joindre un ptit fichier pour signaler ou sont ces liens qui peuvent changer d'une machine a une autre ...)
Je pense notamment a phototeque.vbproj ...

Bref, je sais, c'est chiant a faire tout ca, c'est peut etre triviail pour toi, mais la clé du succès est la ...
J'ai pas dis que tu ne faisais rien de tout cela. Mais qd je regarde tout tes fichiers, d'un premier coup d'½il j'ai aucune idée de savoir ce qu'il y a changer pour que cela marche chez moi si il y'a des choses à changer ...

Et quand on regarde tes sources, on voit qu'il y a pas mal de travail derrière, mais ton travail perd énormément d'attrait car on ne voit pas clairement sa structure et a quoi servent chaque fichier .



Dans tous les cas respect pour tout ce travail, bonne continuation


BRAVO, tout de meme, y'a pas mal de choses qui m'intéressent dans ton code ;)
et merci pour l'info

@lph




Commentaire de jesusonline le 04/07/2003 16:45:06 administrateur CS

J'ai mis les codes que j'ai tapé moi.
dans le zip, il y a tt le projet generé pas vs.net, et ca doit etre pour cela que ca marche pas, pour que ca marche occuper vous pas du .sln mais seulement du vbproj.
Sinon pour les noms de fichiers tous identiques, je sais mais c VS.net qui les nommes automatiquement. les fichiers d'extensions .aspx sont les parties HTML, les .aspx.vb, le code correspondant, les .resx je sais pas mais generé par vs.net, les autres extensions, c'est pour VS.net et si qqn sait a koi sa sert, merci de me faire signe :)

Commentaire de MattZ le 17/10/2003 15:55:04

Il me semble que l'appli nGallery retaille automatiquement les images d'un répertoire...
http://www.ngallery.org


Suite à l'interrogation de Proffial :
"je cherche a faire un truc qui a l'air tout bete, c'est a dire:
la création de miniature d'image a l'aide d'ASP sans avoir a ajouter de composants ...
"

Commentaire de Targos le 05/11/2003 19:19:00

J'ai un petit probleme... J'ai du oublier un truc ...

J'ai dezipper la solution et ajouter un repertoire virtuel dans IIS. Ensuite quand je suis en http://localhost ca marche sans probleme. Quand j'y accede via le net avec le pc ou sont les sources pas de probleme non plus. par contre si qqun de l'exterieur se connecte il nbe voit pas les images car il les cherche en local chez lui..

Merci de m'aider...

Commentaire de jesusonline le 05/11/2003 20:00:16 administrateur CS

je connaissais deja ce problème, il est réparé dans la nouvelle version que je suis en train de faire (qui avance tout doucement à cause du peu de temps que j'ai) mais je me rappelle plus exactement ou il faut changer le code car j'ai totalement réecrit l'application et je passe désormais par une seule image, j'ai retrouvé une version du script ou

il y a
                ArrayListFichierMini.Add(Replace("phototeque" & _
                                    Path.DirectorySeparatorChar & Path.GetFileName(Dossier) & _
                                    Path.DirectorySeparatorChar & "miniature" & _
                                    Path.DirectorySeparatorChar & _
                                    Path.GetFileNameWithoutExtension(FichierNormal) & _
                                    ".jpg", "", "/"))

et dossier doit donc etre déclaré hors de la sub preparationdossier()

j'espere t'avoir aidé


PS : Merci aux personnes utilisant ce script de me laisser leur adress web s'il le souhaite bien entendu :)

Commentaire de alex117 le 24/11/2003 01:53:10

Bonjour,
j'aimerais savoir ou modifie t-on le script ci-dessus.

par avance, merci

Commentaire de sylv2001 le 25/02/2004 11:52:14

Salut jesusonline, je suis débutant en ASP.net et je voudrai savoir s'il est possible d'adapter ton code à l'outil WebMatrix. j'ai essayé en copiant le code mais çà ne marche pas.  

Commentaire de jesusonline le 25/02/2004 13:21:22 administrateur CS

Pour Sylv2001
Je connais pas webmatrix, mais ce code tu as juste à mettre le code dans 4 fichier sur ton serveur les 4 fichiers sont :

phototeque.aspx
phototeque.aspx.vb
popup_photo.aspx
popup_photo.aspx.vb

Et ensuites tu lance phototeque.aspx et il faut egalement que tu configures ton dossier comme une application dans IIS et normalement ca marche ... contact moi par message privé ou sur le forum pour des questions d'installation.

alex117 qu'entend tu par modifier le script, tu peux modifier soit le code VB (fichier .vb) soit le code HTML (.aspx) mais tu peux tout modifier dans le code, mais c'est vrai que c'est totalement different des fichier asp simple ...

Commentaire de sylv2001 le 26/02/2004 09:55:49

merci de m'avoir répondu rapidement. çà marche nickel en ajoutant les 4 fichiers séparement dans un projet WebMatrix.
Thanks!!

Commentaire de gatita_dev le 08/05/2007 15:24:16

j'utilise asp.net 2 et j'ai tester le script mais ça marche pas, est ce que c'est un problème de compatibilité?

Commentaire de jesusonline le 08/05/2007 16:17:28 administrateur CS

possible,

ASP.net 1.x et ASP.net 2.0 ont quelques différences, mais dis moi plutot quelle est le problème ?

Commentaire de gatita_dev le 08/05/2007 16:30:45

quand j'execute il m'affiche le premier repeater avec les categories [photo1|photo2] et il m'affiche le imagebuton vide et en bas de la page les information de traçage qui suivent.
est ce que ça peut être un probléme de protection du fichier j'ai verifier et j'ai tous les droit
_____________________________________________________________________________________________
Détails de la demande
ID de session: i5o5uq45jnzgvzzn4niywy45 Type de la demande: GET
Heure de la demande: 08/05/2007 14:34:10 Code d'état: 200
Codage de la demande: Unicode (UTF-8) Codage de réponse: Unicode (UTF-8)
Informations de traçage
Catégorie Message À partir des premiers À partir des derniers
aspx.page Begin PreInit  
aspx.page End PreInit 2,408E-05 0,000024
aspx.page Begin Init 4,888E-05 0,000025
aspx.page End Init 0,00025544 0,000207
aspx.page Begin InitComplete 0,00027544 0,000020
aspx.page End InitComplete 0,00029112 0,000016
aspx.page Begin PreLoad 0,00030768 0,000017
aspx.page End PreLoad 0,00032584 0,000018
aspx.page Begin Load 0,00034056 0,000015
aspx.page End Load 0,01475152 0,014411
aspx.page Begin LoadComplete 0,01479356 0,000042
aspx.page End LoadComplete 0,01481224 0,000019
aspx.page Begin PreRender 0,01482728 0,000015
aspx.page End PreRender 0,0148466 0,000019
aspx.page Begin PreRenderComplete 0,01486148 0,000015
aspx.page End PreRenderComplete 0,01487588 0,000014
aspx.page Begin SaveState 0,01563248 0,000757
aspx.page End SaveState 0,01805748 0,002425
aspx.page Begin SaveStateComplete 0,0180846 0,000027
aspx.page End SaveStateComplete 0,0181004 0,000016
aspx.page Begin Render 0,01811464 0,000014
aspx.page End Render 0,0196664 0,001552
Arborescence du contrôle
UniqueID du contrôle  Type Taille en octets du rendu (y compris les enfants) Taille en octets de ViewState (sans les enfants) Taille en octets de ControlState (sans les enfants)
__Page ASP.phototeque_aspx 3422 0 0
    _ctl0 System.Web.UI.ResourceBasedLiteralControl 530 0 0
    Form1 System.Web.UI.HtmlControls.HtmlForm 2871 0 0
        _ctl1 System.Web.UI.LiteralControl 63 0 0
        lbl_erreur System.Web.UI.WebControls.Label 29 0 0
        _ctl2 System.Web.UI.LiteralControl 185 0 0
        Repertoire System.Web.UI.WebControls.Repeater 238 28 0
            Repertoire:_ctl0 System.Web.UI.WebControls.RepeaterItem 106 0 0
                Repertoire:_ctl0:_ctl0 System.Web.UI.LiteralControl 13 0 0
                Repertoire:_ctl0:hk System.Web.UI.WebControls.HyperLink 81 96 0
                Repertoire:_ctl0:_ctl1 System.Web.UI.LiteralControl 12 0 0
            Repertoire:_ctl1 System.Web.UI.WebControls.RepeaterItem 26 0 0
                Repertoire:_ctl1:_ctl0 System.Web.UI.LiteralControl 26 0 0
            Repertoire:_ctl2 System.Web.UI.WebControls.RepeaterItem 106 0 0
                Repertoire:_ctl2:_ctl0 System.Web.UI.LiteralControl 13 0 0
                Repertoire:_ctl2:hk System.Web.UI.WebControls.HyperLink 81 96 0
                Repertoire:_ctl2:_ctl1 System.Web.UI.LiteralControl 12 0 0
        _ctl3 System.Web.UI.LiteralControl 159 0 0
        RepeaterPage System.Web.UI.WebControls.Repeater 66 24 0
            RepeaterPage:_ctl0 System.Web.UI.WebControls.RepeaterItem 33 0 0
                RepeaterPage:_ctl0:_ctl0 System.Web.UI.LiteralControl 33 0 0
            RepeaterPage:_ctl1 System.Web.UI.WebControls.RepeaterItem 33 0 0
                RepeaterPage:_ctl1:_ctl0 System.Web.UI.LiteralControl 33 0 0
        _ctl4 System.Web.UI.LiteralControl 111 0 0
        list1 System.Web.UI.WebControls.DataList 671 160 0
            list1:_ctl0 System.Web.UI.WebControls.DataListItem 497 0 0
                list1:_ctl0:_ctl0 System.Web.UI.LiteralControl 10 0 0
                list1:_ctl0:photo System.Web.UI.WebControls.HyperLink 478 528 0
                list1:_ctl0:_ctl1 System.Web.UI.LiteralControl 9 0 0
        _ctl5 System.Web.UI.LiteralControl 81 0 0
        IndicateurPage System.Web.UI.WebControls.Label 49 40 0
        _ctl6 System.Web.UI.LiteralControl 75 0 0
    _ctl7 System.Web.UI.LiteralControl 21 0 0
État de session
Clé de la session Type Valeur
État de l'application
Clé de l'application Type Valeur
Collection Cookies de la demande
Nom Valeur Taille
Collection Cookies de la réponse
Nom Valeur Taille
Collection Headers
Nom Valeur
Connection Keep-Alive
Accept */*
Accept-Encoding gzip, deflate
Accept-Language fr
Host localhost:51583
User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)
UA-CPU x86
Collection Headers de la réponse
Nom Valeur
X-AspNet-Version 2.0.50727
Cache-Control private
Content-Type text/html
Collection Form
Nom Valeur
Collection Querystring
Nom Valeur
Variables serveur
Nom Valeur
ALL_HTTP HTTP_CONNECTION:Keep-Alive HTTP_ACCEPT:*/* HTTP_ACCEPT_ENCODING:gzip, deflate HTTP_ACCEPT_LANGUAGE:fr HTTP_HOST:localhost:51583 HTTP_USER_AGENT:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2) HTTP_UA_CPU:x86  
ALL_RAW Connection: Keep-Alive Accept: */* Accept-Encoding: gzip, deflate Accept-Language: fr Host: localhost:51583 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2) UA-CPU: x86  
APPL_MD_PATH  
APPL_PHYSICAL_PATH C:\Users\informatique\Documents\aspfr_NET-PHOTOTEQUE-AUTOMATIQUE-V2_9055\image2\
AUTH_TYPE NTLM
AUTH_USER EBN-CENTER\informatique
AUTH_PASSWORD  
LOGON_USER EBN-CENTER\informatique
REMOTE_USER EBN-CENTER\informatique
CERT_COOKIE  
CERT_FLAGS  
CERT_ISSUER  
CERT_KEYSIZE  
CERT_SECRETKEYSIZE  
CERT_SERIALNUMBER  
CERT_SERVER_ISSUER  
CERT_SERVER_SUBJECT  
CERT_SUBJECT  
CONTENT_LENGTH 0
CONTENT_TYPE  
GATEWAY_INTERFACE  
HTTPS  
HTTPS_KEYSIZE  
HTTPS_SECRETKEYSIZE  
HTTPS_SERVER_ISSUER  
HTTPS_SERVER_SUBJECT  
INSTANCE_ID  
INSTANCE_META_PATH  
LOCAL_ADDR 127.0.0.1
PATH_INFO /phototeque.aspx
PATH_TRANSLATED C:\Users\informatique\Documents\aspfr_NET-PHOTOTEQUE-AUTOMATIQUE-V2_9055\image2\phototeque.aspx
QUERY_STRING  
REMOTE_ADDR 127.0.0.1
REMOTE_HOST 127.0.0.1
REMOTE_PORT  
REQUEST_METHOD GET
SCRIPT_NAME /phototeque.aspx
SERVER_NAME localhost
SERVER_PORT 51583
SERVER_PORT_SECURE 0
SERVER_PROTOCOL HTTP/1.1
SERVER_SOFTWARE  
URL /phototeque.aspx
HTTP_CONNECTION Keep-Alive
HTTP_ACCEPT */*
HTTP_ACCEPT_ENCODING gzip, deflate
HTTP_ACCEPT_LANGUAGE fr
HTTP_HOST localhost:51583
HTTP_USER_AGENT Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2)
HTTP_UA_CPU x86

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
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 : 0,608 sec (4)

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