Album photo en asp.net tout automatique

Soyez le premier à donner votre avis sur cette source.

Vue 46 489 fois - Téléchargée 2 285 fois

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

Ajouter un commentaire Commentaires
Messages postés
56
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
3 avril 2006

Bonjour et merci pour ce code,

Mais une question, comment doit on faire pour que les photos restent dans l'ordre choisi?
Par exemple j'ai 30 photo numérotés de 1.jpg à 30.jpg mais la photo 10 est juste après la 1, la 20 juste après la 2 etc....
Merci pour la réponse.
Messages postés
31
Date d'inscription
dimanche 27 octobre 2002
Statut
Membre
Dernière intervention
29 octobre 2008

Ce que je cherche à faire, c'est plustôt que d'afficher toujours une image en horizontal, pouvoir en afficher également à la verticale. Pour que cela fonctionne, je suis obligé d'avoir un fond blanc de 600 x 600 sur lequel je pose mon image. Donc toute mes images on une taille de 600 x 600.

Tu peux voir le résultat sur le site suivant http://www.uvbn.com, dans la rubrique photo de compétitions.

As-tu une solution à me proposer.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'ai compris pourquoi tu as une erreur, car une hauteur de 100% ca lui plait pas :( car en fait j'ai définit une hauteur, et comme celle si est inferieur au contenu qd on met 100% il va essayer de reduire la photo

Mais je comprend pas ce que tu veux dire par toute la fenetre? tu prefererais pas une popup ?
Messages postés
31
Date d'inscription
dimanche 27 octobre 2002
Statut
Membre
Dernière intervention
29 octobre 2008

Cela ne fonctionne pas !
J'ai essayé les deux méthodes suivantes :


'=======================================================================================================================
' 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.Percentage(100)
agrandissement.width = Unit.Percentage(100)

agrandissement.alternatetext = "Cliquer ici pour reduire la photo " + photo.tostring()

end sub

OU BIEN

'=======================================================================================================================
' 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.Attributes.Add("height", "100%")
agrandissement.Attributes.Add("width", "100%")

agrandissement.alternatetext = "Cliquer ici pour reduire la photo " + photo.tostring()

end sub


Lorsque l'on clic sur la miniature, rien n'apparais.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Merci beaucoup sylv2001 pour ton encouragement, si tu utilises ce script pour un de tes sites, dis le moi, que je le visites :)

Rallierts :
agrandissement.height = Unit.Percentage(100)
agrandissement.width = Unit.Percentage(100)
ca marche pas comme ca ? ca me semble bizarre sinon :
agrandissement.Attributes.Add("height", "100%")
Faut bien sur supprimer la taille ...
Afficher les 12 commentaires

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.