Miniatures d'img (bisi-bis), Nurgle si T là !

Signaler
Messages postés
136
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 avril 2009
-
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008
-
Je souhaite gérer des miniatures d'images pour optmiser les temps de téléchargement. Je travaille en .Net 1.1.

375045 Nurgle m'est déjà venu en aide en me proposant un lien qui consiste à créer une classe qui implémente l'interface IHttpHandler.

En suivant scrupuleusement cet exemple :
1) je crée la classe qui implémente l'interface IHttpHandler, comme suit :



public



class
ImageHandler : IHttpHandler
{


public
ImageHandler()
{}




#region



IHttpHandler Members


public



bool
IsReusable
{


get
{

return



true
; }
}


public



void
ProcessRequest(HttpContext context)
{


//Récupère le chemin sur le disque

string
chemin = context.Server.MapPath("/societes_photos/");


//Concaténation du path au nom de l'image fournie par la query string

string
fichierImage =

string
.Concat(chemin, context.Request.QueryString["img"]);


//Est-ce que le fichier existe ?

if
(System.IO.File.Exists(fichierImage)==

false
)
fichierImage =

string
.Concat(chemin, "pasdimg");


//Chargement de l'image

System.Drawing.Image laMini = System.Drawing.Image.FromFile(fichierImage);


//Réalisation de la miniature en 58x40

laMini = laMini.GetThumbnailImage(58,40,

null
,

new
IntPtr());


//Envoi de l'image au client

laMini.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);


//Libérer les ressources

laMini.Dispose();
}


#endregion



}

2) Ensuite, je rajoute l'Handler dans le Web.config, comme suit :<

httpHandlers>
<addverb="*"  path="Image.axd"  type="ImageHandler"/>
</httpHandlers>

3) Enfin dans ma Page aspx, je fais bien sûr le lien avec la miniature, du style :

Le résultat de tout ça, C quoi !?!?
A la génération, pas de pb, à l'exécution par contre ça donne ce put1 de message :

Message d'erreur de l'analyseur: Impossible de charger le type ImageHandler à partir de l'assembly System.Web, Version =1.0.5000.0, Culture= neutral, PublicKeyToken=b03f5f7f11d50a3a.

Erreur source:

Ligne 67 :   </httpHandlers>-->
Ligne 68 : <httpHandlers>
Ligne 69 :    Ligne 70 :         path ="Image.axd"
Ligne 71 :         type="ImageHandler" />



Si Quelqu'un peut m'aider parce que là franchement, ça commence à me courir sur le haricot et encore le mot est faible, ras la casquette pour rester poli, surtout que je pense que la solution n'est pas loin, Bordel !!!!

6 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

axd ? on utilise plutot l'extension ashx, axd ne fonctionnera pas, meme si dans ton cas le problème est pas la :-)

Tu as deux solutions pour créer un handler : la méthode rapide et pas trés propre et l'autre, la solution rapide consiste à créer un nouvel element dans ton projet web (create new file) de type handler ashx tu n'as pas besoin de le register dans le web.config, l'autre solution est de créer une assembly qui contient une classe implémentant IHttpHandler comme tu l'as fait. Dans ce cas il faut register le handler comme ca :

Cyril - MVS - MCP
Messages postés
136
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 avril 2009
1
Désolé Jesus, quelque chose n'est pas clair...pour moi !

De quelle dll parles-tu ?
Je dois la générer...comment ?
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Ou as tu créer ton handler ?

dans un autre projet de ta solution ? ou dans le dossier App_Code ? il faut obligatoirement que tu mettes ton code dans un de ces 2 dossiers pour qu'asp.net puisse compiler ton handler et ensuite l'utiliser

<hr />Cyril - MVS - MCP
Messages postés
136
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
13 avril 2009
1
Mon Handler est en fait une classe qui implémente IHttpHandler. Je travaille avec VS 2003 et je ne peux donc pas ajouter d'Handler autrement. Il fait donc bien parti de mon app_code...

publicclassImageHandler : IHttpHandler

{

publicImageHandler()
{}

#region

IHttpHandler Members

public
bool
IsReusable
{

get
{
return
true
; }
}

public
void
ProcessRequest(HttpContext context)
{

//Récupère le chemin sur le disque
string
chemin = context.Server.MapPath("/societes_photos/");

//Concaténation du path au nom de l'image fournie par la query string
string
fichierImage =
string
.Concat(chemin, context.Request.QueryString["img"]);

//Est-ce que le fichier existe ?
if
(System.IO.File.Exists(fichierImage)==

false
)
fichierImage =
string
.Concat(chemin, "pasdimg");

//Chargement de l'image
System.Drawing.Image laMini = System.Drawing.Image.FromFile(fichierImage);

//Réalisation de la miniature en 58x40
laMini = laMini.GetThumbnailImage(58,40,

null
,
new
IntPtr());

//Envoi de l'image au client
laMini.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

//Libérer les ressources
laMini.Dispose();
}

#endregion

}
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
avec VS2003 il n'y a pas de dossier APP_Code ... Je me souviens plus comment cela fonctionne mais je te conseille grandement de rajouter un nouveau projet genre NomSiteWeb.Web tu créer différents dossier (Namespace) pour mettre au final ta classe dans le namespace

NomSiteWeb.Web.Handlers

puis dans le web.config tu fais type="NomSiteWeb.Web.Handlers.MonHandler, NomSiteWeb.Web" le deuxième argument (NomSiteWeb.Web) est le nom de l'assembly qui est pas défaut dans VS le nom du projet (et aussi le nom de la dll dans .dll)

<hr />Cyril - MVS - MCP
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008

Salut,
Regarde du côté de ma source : http://www.aspfr.com/codes/MANIPULATION-IMAGES-TEMPS-REEL-REDUCTION-COMPRESSION-AGRANDISSEMENT-DESCRIPTIONS_35293.aspx
Elle permet le changement de taille et la compression d'images à la volée.
Ma classe est implémentée comme un handler et un document Word est livré pour expliquer l'usage et l'installation de la classe.

Bonne chance.

[:D] @++