Dernière mise à jour :2008-08-23

informatique

Le script ASP.Net suivant permet de redimensionner une image automatiquement suite à un upload.

J'ai initialement créé ce script lors du développement d'un site d'annonces classées. Lorsque l'utilisateur télécharge une image, peut importe le format et la taille de celle-ci, l'image est automatiquement redimensionné à 90x130 pixels et enregistrée au format png.

évidemment, vous pouvez choisir de sauvegarder l'image sous le format désiré (voir le code).

Dans cet exemple, le fichier doit être nommé «fileupload.aspx». Si vous décidez de lui donner un nom différent, pensez à changer la valeur de l'attribut action du formulaire dans le code.

On suppose aussi dans l'exemple qu'il y a un répertoire nommé «exemple» à la racine du site et que celui-ci contient un répertoire nommé «images».

J'espère que ce script vous sera utile. Si vous avez des commentaires, n'hésitez pas à m'écrire.

Bonne programmation!

Listing 1.0
<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
void UploadBtn_Click(Object sender, EventArgs e)
{
String UploadedFile = MyFile.PostedFile.FileName;
int ExtractPos = UploadedFile.LastIndexOf("\\") + 1;

// Extraire le nom du fichier depuis le path
String UploadedFileName = UploadedFile.Substring(ExtractPos,UploadedFile.Length - ExtractPos);

// Enregistrer le fichier téléchargé sur le serveur dans le répertoire images.
// On change le nom de l'image en lui ajoutant la date du jour en début de nom
// de fichier.
// Ceci permet d'éviter qu'un autre utilisateur télécharge une image du même nom.
DateTime rightNow = DateTime.Now;
String s = rightNow.ToString();
s = s.Replace(" ","-");
s = s.Replace(":","");
MyFile.PostedFile.SaveAs(Server.MapPath("/exemple") + "\\images\\" + s + UploadedFileName );

// Début de la création de la petite image (thumbnail)
try
{
// Trouver le nom de l'image dont le thumbnail doit être créé.
String imageUrl= s + UploadedFileName;
// Trouver la hauteur et la largeur de l'image.

// Spécifier une taille standard
int imageWidth1 = 0;
int imageHeight1 = 0;
if (po.Checked)
{
imageWidth1 = 90;
imageHeight1 = 130;
}
if (pa.Checked)
{
imageWidth1 = 130;
imageHeight1 = 90;
}

if (imageUrl.IndexOf("/") >= 0 || imageUrl.IndexOf("\\") >= 0 )
{
// Il y a présence d'un / ou \
Response.End();
}

// L'image téléchargée sera emmagasinée dans le répertoire images.
// Pour que la taille de l'image soit changé, l'image originale doit être dans le dossier images.
imageUrl = "/exemple/images/" + imageUrl;
System.Drawing.Image fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(imageUrl));
System.Drawing.Image.GetThumbnailImageAbort dCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);

System.Drawing.Image thumbNailImg1 = fullSizeImg.GetThumbnailImage(imageWidth1, imageHeight1, dCallBack, IntPtr.Zero);



// Enregistrer les images en format PNG
// Le format peut être ajusté en utilisant la propriété ImageFormat
thumbNailImg1.Save ( Server.MapPath("/exemple") + "\\images\\" + s + "-p.png", ImageFormat.Png);
thumbNailImg1.Dispose();

divImg.InnerHtml = "<img src=\"/exemple/images/" + s + "-p.png\" style=\"border:3px solid #999999;\" />";
}
catch(Exception ex)
{
Response.Write("Une erreur s'est produite : " + ex.ToString());
}
}
// Cette fonction est requise pour la création du thumbnail.
public bool ThumbnailCallback()
{
return false;
}
</script>

<html>
<head>
<title>A525G - Exemple d'upload et de resize d'image</title>
</head>
<body>
<form action="fileupload.aspx" method="post" enctype="multipart/form-data" runat="server">
<br />
<table border="1" width="95%" align="center" cellpadding="0" cellspacing="0" summary="">
<tr>
<th align="left" valign="middle" width="65%">
<span class="formulaire-texte-section-entete">
Ajout d'une image
</span>
</th>
<th align="left" valign="middle" width="35%">
 
</th>
</tr>
<tr>
<td align="left" colspan="2" width="100%">
<br />
<table width="100%" align="center" cellspacing="0" cellpadding="5">
<tr>
<td >
<b>Sélectionnez l'image à ajouter</b>
<br />
<input id="MyFile" type="file" runat="server" />
</td>
</tr>
</table>
<br />
<table width="100%" align="center" cellspacing="0" cellpadding="5">
<tr>
<td colspan="3">
<b>Indiquez l'orientation de votre photo</b>
</td>
</tr>
<tr>
<td width="30%">
<table width="100%" style="border:1px solid #EFEFEF;">
<tr>
<td>
Paysage
</td>
<td>
<asp:RadioButton id="pa" runat="server" GroupName="p" />
</td>
</tr>
</table>
</td>
<td width="30%">
<table width="100%" style="border:1px solid #EFEFEF;">
<tr>
<td>
Portrait
</td>
<td>
<asp:RadioButton id="po" runat="server" GroupName="p" />
</td>
</tr>
</table>
</td>
<td width="40%">
 
</td>
</tr>
</table>
<table align="center" width="100%" cellpadding="3" cellspacing="0">
<tr>
<td bgcolor="#999999" align="center"><input type="submit" value="Ajouter" runat="server" onserverclick="UploadBtn_Click" /></td>
</tr>
<tr>
<td align="center"><div id="divImg" runat="server" /></td>
</tr>
</table>
</td>
</tr>
</table>

</form>
</body>
</html>

Auteur : Sylvain Bilodeau

Date de mise en ligne : 2005-04-18

Aucun commentaire pour l'instant.