OVH Cloud OVH Cloud

Générer une vignette

4 réponses
Avatar
Steeve
Bonjour,

Je cherche à générer une vignette mais le WebControl Image possède une
limitation que je n'aime pas beaucoup. Je dois absolument donner une valeur
à la propriété ImageUrl pour afficher une image. J'aimerais plutôt y fournir
un "FileStream" pour éviter de stocker des vignettes dans un autre dossier
de mon site. Ainsi, j'évite les doublons et la gestion est simplifiée.

Voici mon code. Y-a-t-il une solution ?
Steeve

private void Page_Load(object sender, System.EventArgs e)
{
Image1.ImageUrl = Server.MapPath("photos/Collines.jpg");
// J'aimerais mieux pouvoir écrire : Image1.Stream=
GenererVignette("photos/Collines.jpg");
}
private System.Drawing.Image GenererVignette(string FilePath)
{
int THUMBNAIL_HEIGHT = 120;
System.IO.FileStream fs = new FileStream(FilePath, FileMode.Open,
FileAccess.Read);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(fs);
decimal decRatio = Convert.ToDecimal(bmp.Width / bmp.Height);
int intWidth = Convert.ToInt32(decRatio * THUMBNAIL_HEIGHT);
System.Drawing.Image.GetThumbnailImageAbort myCallback;
myCallback = new
System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image img = bmp.GetThumbnailImage(intWidth, THUMBNAIL_HEIGHT,
myCallback, IntPtr.Zero);
return (System.Drawing.Image)img;
}
private bool ThumbnailCallback()
{
return false;
}

4 réponses

Avatar
Patrice
Image1.Url peut pointer vers une page ASPX qui fera ce traitement et qui
retournera la vignette vers l'objet "response"...

A noter que stocker la vignette pourrait permettre tout de même de faire ce
traitement une fois à chaque fois que l'image source est modifiée plutôt
qu'à chaque fois.

Patrice

--

"Steeve" a écrit dans le message de
news:
Bonjour,

Je cherche à générer une vignette mais le WebControl Image possède une
limitation que je n'aime pas beaucoup. Je dois absolument donner une


valeur
à la propriété ImageUrl pour afficher une image. J'aimerais plutôt y


fournir
un "FileStream" pour éviter de stocker des vignettes dans un autre dossier
de mon site. Ainsi, j'évite les doublons et la gestion est simplifiée.

Voici mon code. Y-a-t-il une solution ?
Steeve

private void Page_Load(object sender, System.EventArgs e)
{
Image1.ImageUrl = Server.MapPath("photos/Collines.jpg");
// J'aimerais mieux pouvoir écrire : Image1.Stream > GenererVignette("photos/Collines.jpg");
}
private System.Drawing.Image GenererVignette(string FilePath)
{
int THUMBNAIL_HEIGHT = 120;
System.IO.FileStream fs = new FileStream(FilePath, FileMode.Open,
FileAccess.Read);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(fs);
decimal decRatio = Convert.ToDecimal(bmp.Width / bmp.Height);
int intWidth = Convert.ToInt32(decRatio * THUMBNAIL_HEIGHT);
System.Drawing.Image.GetThumbnailImageAbort myCallback;
myCallback = new
System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image img = bmp.GetThumbnailImage(intWidth,


THUMBNAIL_HEIGHT,
myCallback, IntPtr.Zero);
return (System.Drawing.Image)img;
}
private bool ThumbnailCallback()
{
return false;
}




Avatar
Steeve
Peux-tu me donner des explications supplémentaires ? Ou mieux, un tutorial
que je pourrais lire sur un site.

Steeve


"Patrice" wrote in message
news:
Image1.Url peut pointer vers une page ASPX qui fera ce traitement et qui
retournera la vignette vers l'objet "response"...

A noter que stocker la vignette pourrait permettre tout de même de faire


ce
traitement une fois à chaque fois que l'image source est modifiée plutôt
qu'à chaque fois.

Patrice

--

"Steeve" a écrit dans le message de
news:
> Bonjour,
>
> Je cherche à générer une vignette mais le WebControl Image possède une
> limitation que je n'aime pas beaucoup. Je dois absolument donner une
valeur
> à la propriété ImageUrl pour afficher une image. J'aimerais plutôt y
fournir
> un "FileStream" pour éviter de stocker des vignettes dans un autre


dossier
> de mon site. Ainsi, j'évite les doublons et la gestion est simplifiée.
>
> Voici mon code. Y-a-t-il une solution ?
> Steeve
>
> private void Page_Load(object sender, System.EventArgs e)
> {
> Image1.ImageUrl = Server.MapPath("photos/Collines.jpg");
> // J'aimerais mieux pouvoir écrire : Image1.Stream > > GenererVignette("photos/Collines.jpg");
> }
> private System.Drawing.Image GenererVignette(string FilePath)
> {
> int THUMBNAIL_HEIGHT = 120;
> System.IO.FileStream fs = new FileStream(FilePath, FileMode.Open,
> FileAccess.Read);
> System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(fs);
> decimal decRatio = Convert.ToDecimal(bmp.Width / bmp.Height);
> int intWidth = Convert.ToInt32(decRatio * THUMBNAIL_HEIGHT);
> System.Drawing.Image.GetThumbnailImageAbort myCallback;
> myCallback = new
> System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
> System.Drawing.Image img = bmp.GetThumbnailImage(intWidth,
THUMBNAIL_HEIGHT,
> myCallback, IntPtr.Zero);
> return (System.Drawing.Image)img;
> }
> private bool ThumbnailCallback()
> {
> return false;
> }
>
>




Avatar
Steeve
J'ai regardé ça, j'ai trouvé des exemples.

Cependant, est-ce que cela serait possible de mettre le code dans une classe
plutôt que dans une page aspx ?

Steeve

"Patrice" a écrit dans le message de news:

Image1.Url peut pointer vers une page ASPX qui fera ce traitement et qui
retournera la vignette vers l'objet "response"...

A noter que stocker la vignette pourrait permettre tout de même de faire
ce
traitement une fois à chaque fois que l'image source est modifiée plutôt
qu'à chaque fois.

Patrice

--

"Steeve" a écrit dans le message de
news:
Bonjour,

Je cherche à générer une vignette mais le WebControl Image possède une
limitation que je n'aime pas beaucoup. Je dois absolument donner une


valeur
à la propriété ImageUrl pour afficher une image. J'aimerais plutôt y


fournir
un "FileStream" pour éviter de stocker des vignettes dans un autre
dossier
de mon site. Ainsi, j'évite les doublons et la gestion est simplifiée.

Voici mon code. Y-a-t-il une solution ?
Steeve

private void Page_Load(object sender, System.EventArgs e)
{
Image1.ImageUrl = Server.MapPath("photos/Collines.jpg");
// J'aimerais mieux pouvoir écrire : Image1.Stream >> GenererVignette("photos/Collines.jpg");
}
private System.Drawing.Image GenererVignette(string FilePath)
{
int THUMBNAIL_HEIGHT = 120;
System.IO.FileStream fs = new FileStream(FilePath, FileMode.Open,
FileAccess.Read);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(fs);
decimal decRatio = Convert.ToDecimal(bmp.Width / bmp.Height);
int intWidth = Convert.ToInt32(decRatio * THUMBNAIL_HEIGHT);
System.Drawing.Image.GetThumbnailImageAbort myCallback;
myCallback = new
System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image img = bmp.GetThumbnailImage(intWidth,


THUMBNAIL_HEIGHT,
myCallback, IntPtr.Zero);
return (System.Drawing.Image)img;
}
private bool ThumbnailCallback()
{
return false;
}








Avatar
Paul Bacelar
Et avec ça ?
http://msdn.microsoft.com/msdnmag/issues/04/04/CuttingEdge/default.aspx
--
Paul Bacelar

"Steeve" wrote in message
news:
J'ai regardé ça, j'ai trouvé des exemples.

Cependant, est-ce que cela serait possible de mettre le code dans une


classe
plutôt que dans une page aspx ?

Steeve

"Patrice" a écrit dans le message de news:

> Image1.Url peut pointer vers une page ASPX qui fera ce traitement et qui
> retournera la vignette vers l'objet "response"...
>
> A noter que stocker la vignette pourrait permettre tout de même de faire
> ce
> traitement une fois à chaque fois que l'image source est modifiée plutôt
> qu'à chaque fois.
>
> Patrice
>
> --
>
> "Steeve" a écrit dans le message de
> news:
>> Bonjour,
>>
>> Je cherche à générer une vignette mais le WebControl Image possède une
>> limitation que je n'aime pas beaucoup. Je dois absolument donner une
> valeur
>> à la propriété ImageUrl pour afficher une image. J'aimerais plutôt y
> fournir
>> un "FileStream" pour éviter de stocker des vignettes dans un autre
>> dossier
>> de mon site. Ainsi, j'évite les doublons et la gestion est simplifiée.
>>
>> Voici mon code. Y-a-t-il une solution ?
>> Steeve
>>
>> private void Page_Load(object sender, System.EventArgs e)
>> {
>> Image1.ImageUrl = Server.MapPath("photos/Collines.jpg");
>> // J'aimerais mieux pouvoir écrire : Image1.Stream > >> GenererVignette("photos/Collines.jpg");
>> }
>> private System.Drawing.Image GenererVignette(string FilePath)
>> {
>> int THUMBNAIL_HEIGHT = 120;
>> System.IO.FileStream fs = new FileStream(FilePath, FileMode.Open,
>> FileAccess.Read);
>> System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(fs);
>> decimal decRatio = Convert.ToDecimal(bmp.Width / bmp.Height);
>> int intWidth = Convert.ToInt32(decRatio * THUMBNAIL_HEIGHT);
>> System.Drawing.Image.GetThumbnailImageAbort myCallback;
>> myCallback = new
>> System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
>> System.Drawing.Image img = bmp.GetThumbnailImage(intWidth,
> THUMBNAIL_HEIGHT,
>> myCallback, IntPtr.Zero);
>> return (System.Drawing.Image)img;
>> }
>> private bool ThumbnailCallback()
>> {
>> return false;
>> }
>>
>>
>
>