Album photo en asp.net tout automatique

Description

Cette source permet de generer un album photo automatiquement, le fichier aspx se nomme miniature.aspx dans ce dossier il doit y avoir un dossier phototeque avec toutes les photos qui doivent etre à un format de 600*450. Dans ce dossier il devra y avoir un dossier miniature avec les mêmes photos avec le même nom, la taille doit etre de 140*105

[Racine] - miniature.aspx
|---[phototheque] (image grande)
|---[miniature] (image petite)

il y'a plusieurs page suivant les photos pour differencier les photos il suffit de mettre un nombre devant le nom par exemple 1exemple.jpg, les photos doivent etre en jpg
pour rajouter une photo il suffit de rajouter la photo dans les dossier.

Source / Exemple :


<%@ Page Language="VB" Debug="true" %>
<%@import Namespace="System.xml"%>
<%@import Namespace="System.io"%>

<script language="VB" runat="server">
public imgdepart as string

'========================================================
'                            fonction pour savoir le nom de la page sans l'extension
'========================================================
public function fnom_page(fichier as string)
	dim taille_tableau, spage, sval, sval2, fichier2, extension as string
	dim tabpage, val_extension as array

	tabPage = split(fichier,"/")						' on regarde dans quel page on est
	val_extension = split(fichier,".")					' on decoupe avec tous les points

	for each sval2 in val_extension						'on passe tous les membre jusqu'au dernier
		extension = sval2
	next

	for each sval in tabpage							'on remet tabpage dans un string
		fichier2 &= sval
	next
	
	if fichier2 = fichier then							'on à regardé si ca a fait qqchose avec le slash
		tabPage = split(fichier,"\")					'on refait avec l'antislash
	end if
	
	taille_tableau = Ubound(tabpage)
	spage = tabpage(taille_tableau) 
	
	spage = replace(spage, "." + extension,"")			' replace(string, valeure a remplacer, valeur de remplacement
	spage = StrConv(spage, VbStrConv.LowerCase) 		' StrConv fonction de formatage; VbStrConv.LowerCase ==> tt en minuscule
	fnom_page = spage
end function

Sub Page_Load(obj As object, e As eventargs)

	
	if not page.ispostback then							' pour savoir si la page est valide
		dim marray as new arraylist()					' si oui je remplis un arraylist
		dim i as integer								' avec des numeros qui serviront a peupler le datareapeter	
														' pour faire des liens
			for i = 1 to 9								' et voir les differentes images suivant le numero
				marray.add(i.tostring())
			next i
				marray.add("toutes")
				
		texte.datasource = marray
		texte.databind()
	end if
		
	dim id as string = request.QueryString("id") 	' variable pour savoir quelles images afficher
	
	select case id
	
		case ""
			notice.text = "<hr size=1px><b>"+id+"</b><hr size=1px>"
			imgdepart = "1"								' on donne le premier numero de l'image						
			affichage_miniature							' permet d'afficher les miniatures
			
		case "toutes"
			notice.text = "<hr size=1px><b>"+id+"</b><hr size=1px>"
			imgdepart = ""								' on donne le premier numero de l'image						
			affichage_miniature							' permet d'afficher les miniatures
		
		case else
			notice.text = "<hr size=1px><b>"+id+"</b><hr size=1px>"
			imgdepart = id.tostring						' on donne le premier numero de l'image						
			affichage_miniature							' permet d'afficher les miniatures
			
	end select
	 
end sub

'========================================================
' sub permettant d'afficher les miniatures	
'========================================================
sub affichage_miniature()

	if not page.IsPostBack then							' Seulement si la page est valide
		dim mArray as array								' array de toutes les images commencant par imgdepart
		dim mArray2 as new arraylist()					' array avec 4 images
		dim counter as integer = 0						' pour savoir a combien d'image on est					
		dim svaleur as string							' string qui sert juste pour le for each
		
		mArray = directory.getfiles(server.MapPath("phototeque/miniature/"), imgdepart + "*.jpg")
		
		for each svaleur in mArray						' on commence la boucle pour tt array
			mArray2.Add(fnom_page(svaleur))				' on remplit l'array2 juste avec le nom de l'image sans l'extesion
		next
	list1.datasource = mArray2
	list1.databind()
	end if
end sub

'========================================================
' recupere le numero de l'image et l'envoie dans la function agrandir
'========================================================
sub img_click(sender As Object, e As System.Web.UI.WebControls.CommandEventArgs)

	dim photo as string = sender.commandargument
	agrandissement.imageurl =  "phototeque/" + photo.tostring() + ".jpg"
	agrandissement.borderwidth = unit.pixel(1)
	agrandissement.visible = "true"
	agrandissement.height = unit.pixel(450)
	agrandissement.width = unit.pixel(600)
	agrandissement.alternatetext = "Cliquer ici pour reduire la photo " + photo.tostring()

end sub

'========================================================
' sub pour reduire la photo et pour cacher l'image et tout ca qui traine
'=
sub agrandissement_click(sender As Object, e As System.Web.UI.ImageClickEventArgs)

	agrandissement.imageurl =  ""
	agrandissement.visible = "false"
	agrandissement.height = unit.pixel(0)
	
end sub

</script>

<html>
<head>
<title>Miniatures</title>
</head>
<body>
<form runat="server">
          <tr> 
            <td height="102" valign="top"><table width="100%">
			   <tr> 
                  <td height="10"></td>
                </tr>
                <tr> 
                  <td height="20" align="center"><asp:repeater id=texte runat="server" >
				  <itemtemplate>
				  <asp:hyperlink
					  id=hk text=<%# container.dataitem %>
					  NavigateUrl=<%# "miniature.aspx?id=" + container.dataitem %>
					  runat="server"
				  />
				  </itemtemplate>
				  <separatortemplate>|</separatortemplate>
				  </asp:repeater>
				  </td>
                </tr>
                <tr> 
                  <td height="10"></td>
                </tr>
                <tr> 
                  <td align="center"> 
                    <asp:label id="notice" runat="server"/>
                  </td>
                </tr>
                <tr> 
                  <td height="5"></td>
                </tr>
                <tr> 
                  <td align="center">
				  <asp:imagebutton
					  imagealign="middle"
					  height="0"
					  id="agrandissement"
					  runat="server"
					  Visible="false"
					  OnClick="agrandissement_click"
				  /></td>
                </tr>
                <tr> 
                  <td height="10"></td>
                </tr>
              </table>
             <asp:datalist ID="list1"
			  	RepeatColumns="4"
				RepeatDirection="Horizontal"
				ItemStyle-VerticalAlign="middle"
				ItemStyle-HorizontalAlign="center"
				runat="server"
				Width="100%"
				CellSpacing="4" 
			 > 
					<itemtemplate> 
					  <asp:imagebutton id="photo"
						  ImageAlign="Middle" 
						  AlternateText='<%# "Photo N° "+ Container.dataitem%>'
						  ImageUrl='<%# "phototeque/miniature/"+ Container.dataitem +".jpg"%>' 
						  Width="140" Height="105"
						  commandargument='<%# Container.dataitem %>'
						  OnCommand="img_click"
						  runat="server" 
					  />
					</itemtemplate>
              </asp:datalist>
			  <table width="100%">
                <tr> 
                  <td height="20"></td>
                </tr>
              </table></td>
          </tr>
</form>
</body>
</html>

Conclusion :


A ma connaissance il n'y a pas de bug si tout est bien configuré, pas de gestion d'erreur donc il risque d'y avoir pas mal de petits problèmes pour la configuration

Codes Sources

A voir également

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.