Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GÉNÉRER UNE VIGNETTE À PARTIR D'UNE IMAGE JPEG/BMP, VIA L'OBJET ASPIMAGE


Information sur la source

Catégorie :Graphique Classé sous : miniature, thumbshot, image, picture, aspimage Niveau : Initié Date de création : 11/08/2004 Date de mise à jour : 11/08/2004 15:46:41 Vu : 10 885

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Une classe qui permet de générer une vignette de dimension (X,Y) maximale paramétrable,
à partir d'une image JPEG ou BMP, via l'objet AspImage
 

Source

  • <%
  • 'Cette classe permet de générer une vignette de dimension (X,Y) maximale paramétrable,
  • ' à partir d'une image JPEG ou BMP, via l'objet AspImage
  • Class Vignette
  • '***** Les variables privées
  • 'L'objet AspImage
  • Private Image
  • 'Les tailles X et Y max de la vignette
  • Private mvarX
  • Private mvarY
  • '***** Les méthodes privées
  • 'Initialisation de la classe
  • Private Sub Class_Initialize()
  • Set Image = Server.CreateObject("AspImage.Image")
  • End sub
  • 'Destruction de la classe
  • Private Sub Class_Terminate()
  • Set Image=nothing
  • End sub
  • '***** Les propriétés publiques
  • 'La taille X maxi de la vignette
  • Public Property Let maxiX(X)
  • mvarX=X
  • End Property
  • 'La taille Y maxi de la vignette
  • Public Property Let maxiY(Y)
  • mvarY=Y
  • End Property
  • '***** Les méthodes publiques
  • 'Création de la vignette
  • ' - reporigine: chemin virtuel du répertoire où se trouve l'image à transformer
  • ' - nomorigine: nom de l'image à transformer
  • ' - repvignette: chemin virtuel du répertoire où l'on sauvegarde la vignette
  • ' - nomvignette: nom de la vignette obtenue
  • Public Function CreeVignette(reporigine,nomorigine,repvignette,nomvignette)
  • Dim dX 'La valeur réelle calculée de X pour la vignette
  • Dim dY 'La valeur réelle calculée de Y pour la vignette
  • Dim imgX 'La valeur X de l'image à transformer
  • Dim imgY 'La valeur Y de l'image à transformer
  • Image.LoadImage Server.MapPath(reporigine & "/" & nomorigine)
  • imgX=Image.MaxX
  • imgY=Image.MaxY
  • 'Si la largeur ou la hauteur depasse la taille maximale
  • if ((imgX >= mvarX) or (imgY >= mvarY)) then
  • ' Si la largeur et la hauteur depassent la taille maximale
  • if ((imgX >= mvarX) and (imgY >= mvarY)) then
  • 'On cherche la plus grande valeur
  • if (imgX>imgY) then
  • dX = mvarX
  • ' On calcule dY proportionnellement
  • dY = (imgY * dX) / imgX
  • else
  • dY = mvarY
  • ' On Calcule dX proportionnellement
  • dX = (imgX * dY) / imgY
  • end if
  • else
  • if ((imgX > mvarX) and (imgY < mvarY)) then
  • ' Si X depasse la taille maximale
  • dX = mvarX
  • ' On calcule dY proportionnellement
  • dY = (imgY * dX) / imgX
  • else
  • if ((imgX < mvarX) and (imgY > mvarY)) then
  • ' Si Y depasse la taille maximale
  • dY = mvarY
  • ' On calcule X proportionnellement
  • dX = (imgX * dY) / imgY
  • end if
  • end if
  • end if
  • end if
  • 'On redimensionne l'image en fonction des valeurs calculées
  • Image.DPI=72
  • Image.ImageFormat=1
  • Image.ResizeR dX, dY
  • 'On sauvegarde la vignette
  • Image.FileName = Server.MapPath(repvignette & "/" & nomvignette)
  • if Image.SaveImage then
  • CreeVignette=""
  • else
  • CreeVignette=Image.Error
  • end if
  • End Function
  • End class
  • %>
<%
'Cette classe permet de générer une vignette de dimension (X,Y) maximale paramétrable,
' à partir d'une image JPEG ou BMP, via l'objet AspImage
Class Vignette

'***** Les variables privées
	
	'L'objet AspImage
	Private Image
	'Les tailles X et Y max de la vignette
	Private mvarX
	Private mvarY
	
'***** Les méthodes privées
	
	'Initialisation de la classe
	Private Sub Class_Initialize()
		Set Image = Server.CreateObject("AspImage.Image")
	End sub

	'Destruction de la classe
	Private Sub Class_Terminate()
		Set Image=nothing
	End sub

'***** Les propriétés publiques
	'La taille X maxi de la vignette
	Public Property Let maxiX(X)
		mvarX=X
	End Property

	'La taille Y maxi de la vignette
	Public Property Let maxiY(Y)
		mvarY=Y
	End Property

'***** Les méthodes publiques
	
	'Création de la vignette
	' - reporigine: chemin virtuel du répertoire où se trouve l'image à transformer
	' - nomorigine: nom de l'image à transformer
	' - repvignette: chemin virtuel du répertoire où l'on sauvegarde la vignette
	' - nomvignette: nom de la vignette obtenue
	Public Function CreeVignette(reporigine,nomorigine,repvignette,nomvignette)
		Dim dX 'La valeur réelle calculée de X pour la vignette
		Dim dY 'La valeur réelle calculée de Y pour la vignette
		Dim imgX 'La valeur X de l'image à transformer
		Dim imgY 'La valeur Y de l'image à transformer
		
		Image.LoadImage Server.MapPath(reporigine & "/" & nomorigine)
		imgX=Image.MaxX
		imgY=Image.MaxY
		'Si la largeur ou la hauteur depasse la taille maximale
		if ((imgX >= mvarX) or (imgY >= mvarY)) then
			' Si la largeur et la hauteur depassent la taille maximale
			if ((imgX >= mvarX) and (imgY >= mvarY)) then
				'On cherche la plus grande valeur
				if (imgX>imgY) then
			        dX = mvarX
				    ' On calcule dY proportionnellement
			        dY = (imgY * dX) / imgX
				else
					dY = mvarY
					' On Calcule dX proportionnellement
			        dX = (imgX * dY) / imgY
				end if
			else
				if ((imgX > mvarX) and (imgY < mvarY)) then
				' Si X depasse la taille maximale
					dX = mvarX
					' On calcule dY proportionnellement
					dY = (imgY * dX) / imgX
				else
					if ((imgX < mvarX) and (imgY > mvarY)) then
					' Si Y depasse la taille maximale
						dY = mvarY
						' On calcule X proportionnellement
						dX = (imgX * dY) / imgY
					end if
				end if
			end if
		end if
		'On redimensionne l'image en fonction des valeurs calculées
		Image.DPI=72
		Image.ImageFormat=1
		Image.ResizeR dX, dY
		'On sauvegarde la vignette
		Image.FileName = Server.MapPath(repvignette & "/" & nomvignette)
		if Image.SaveImage then
			CreeVignette=""
		else
			CreeVignette=Image.Error
 		end if		
	End Function
End class
%>

Conclusion

Bien sur, il faut que aspimage soit présent sur votre serveur.
 

Historique

11 août 2004 15:46:41 :
Ajout d'un commentaire

Commentaires et avis

signaler à un administrateur
Commentaire de pereg le 16/08/2004 11:11:11

Ce serait bien d'ajouter que c'est une source .NET

signaler à un administrateur
Commentaire de fr64 le 16/08/2004 11:18:43

Non, non, ce n'est pas une source .NET.
C'est de l'ASP ancienne mouture.

signaler à un administrateur
Commentaire de ranouf le 05/10/2004 13:45:30

question, si t'indiques seulement la largeur ça gere automatiquement la hauteur ?

signaler à un administrateur
Commentaire de fr64 le 05/10/2004 14:24:45

Non, mais le code peut être facilement modifié pour cela.

Par exemple, on initialise mvarY à zéro lors de l'init de la classe, puis on teste si mvarY=0 alors je ne fais que la partie qui concerne X,soit

If ((imgX > mvarX) Then
                ' Si X depasse la taille maximale
                    dX = mvarX
                    ' On calcule dY proportionnellement
                    dY = (imgY * dX) / imgX

signaler à un administrateur
Commentaire de ranouf le 05/10/2004 14:32:24

fr64 > merci pour la réponse expresse, ton code m'interesse va falloir que je l'analyse + en profondeur je suis en train de dev un site pour mes parents ou je dois proposer un catalogue de photo et ton code va me faire gagner du tps !!

merci

signaler à un administrateur
Commentaire de ranouf le 06/10/2004 16:16:34

tu devrais peut etre rajouté Image.SaveImage(); parce que là ça enregistre pas non ?

signaler à un administrateur
Commentaire de fr64 le 06/10/2004 16:21:48

Voir ce bout de code en bas:

'On sauvegarde la vignette
        Image.FileName = Server.MapPath(repvignette & "/" & nomvignette)
        If Image.SaveImage Then
            CreeVignette=""
        Else
            CreeVignette=Image.Error
       End If      

signaler à un administrateur
Commentaire de ranouf le 06/10/2004 16:24:21

ha non pardon il est dans le if dsl, mais c bizarre ya un endroit ou ça couille chez moi :

Dim Image
Dim nImgX, nImgX_S
Dim nImgY, nImgY_S




'--- Création de l'objet image
Set Image = Server.CreateObject("AspImage.Image")


'--- Chargement de l'image
Image.LoadImage strAdresse & "\" &  strFichier
nImgX=Image.MaxX
nImgY=Image.MaxY


'--- Calcul des dimension
nImgX_S=600
nImgY_S=int((600*nImgY)/nImgX)


'--- On redimensionne l'image en fonction des valeurs calculées
Image.DPI=72
Image.ImageFormat=1
Image.ResizeR nImgX_S, nImgY_S



'--- On sauvegarde
Image.FileName = strAdresse & "\" &  "small_" & strFichier
Image.SaveImage()

if Image.SaveImage then 'test si erreur
direc= "<img src="""& strAdresse & "\" &  "small_" & strFichier & """><br>"'si pas erreur alors on affichera l'image dl
else
direc="une erreur c produite : "& Image.Error &"<br>"'si erreur alors on affiche l'erreur
end if

response.Write(direc)  

signaler à un administrateur
Commentaire de fr64 le 06/10/2004 16:36:58

Tu fais deux fois SaveImage ?

signaler à un administrateur
Commentaire de ranouf le 06/10/2004 16:47:26

vu qu'un ça marché pas je me suis dit pkoi pas en mettre un 2e :) mais ça marche toujours pas, g bien installé aspimage ce qui est bizarre c que ça blok juste à saveimage tout le reste marche ...

autre question, la dimension c en koi là ? parce que quand je veux mettre x a 600, dimension que je mets en code html, en fait là ça agrandit l'image plutot que de la rétrécir ... c en pixel tu penses ?

signaler à un administrateur
Commentaire de fr64 le 06/10/2004 17:07:16

Dimension en pixel.
Quel est le message d'erreur? C'est peut étre un pb de droit en écriture sur le répertoire cible.

signaler à un administrateur
Commentaire de ranouf le 06/10/2004 17:09:19

mdr maintenant g :
ASPImage.Image error '8000ffff'

This evaluation component has expired. Please register.

alors que g pas réussi à m'en servir ....
ya moyen de cracker la dll tu penses ?
t'a u ce pb toi ?

signaler à un administrateur
Commentaire de ranouf le 06/10/2004 17:10:48

http://82.228.80.72/tests/upload/index.asp

voila c sur mon serveur et mon code ( c long car en fait 'j'up le fichier puis j'essai de le redim :

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%

'------------------------------------------------------------
Public sub UploaderFichier(mySmartUpload, strAdresse)
'------------------------------------------------------------
'--- upload fichier a une adresse donnée
'------------------------------------------------------------
    
Dim Fichier

'On error resume next'si erreur on continue quand meme

'mySmartUpload.MaxFileSize = 5000' Taille maximale autorisée : 5 Ko
'mySmartUpload.AllowedFilesList = "gif,jpg"' Upload autorisé sur les gif et jpg uniquement

mySmartUpload.Upload' Selectionne chaque fichier

For each Fichier In mySmartUpload.files
If not Fichier.IsMissing Then

strFichier = Fichier.FileName
Fichier.SaveAs(strAdresse & "\" &  strFichier)' Upload du fichier

End If
Next

if err.number =0 then 'test si erreur
direc= "<img src="""& strAdresse & "\" & strFichier & """><br>"'si pas erreur alors on affichera l'image dl
else
direc="une erreur c produite : "& strAdresse & "\" &  strFichier &"<br>"'si erreur alors on affiche l'erreur
end if

response.Write(direc)

Image_S strAdresse, strFichier

End sub

Public Sub Image_S(strAdresse, strFichier)

Dim Image
Dim nImgX, nImgX_S
Dim nImgY, nImgY_S

on error goto 0


'--- Création de l'objet image
Set Image = Server.CreateObject("AspImage.Image")
response.Write("Objet<br>")

'--- Chargement de l'image
Image.LoadImage strAdresse & "\" &  strFichier
nImgX=Image.MaxX
nImgY=Image.MaxY
response.Write("Image : " & strAdresse & "\" &  strFichier & "<br> X:" & nImgX & " Y:" & nImgY & "<br>")

'--- Calcul des dimension
nImgX_S=200
nImgY_S=int((200*nImgY)/nImgX)
response.Write("Dimension X:" & nImgX_S & " Y:" & nImgY_S & "<br>")

'--- On redimensionne l'image en fonction des valeurs calculées
Image.DPI=72
Image.ImageFormat=1
Image.ResizeR nImgX_S, nImgY_S
response.Write("Redim<br>")


'--- On sauvegarde
Image.FileName = strAdresse & "\" &  "small_" & strFichier
response.Write("Adresse : " & strAdresse & "\" &  "small_" & strFichier & "<br>")

if Image.SaveImage then 'test si erreur
direc= "<img src="""& strAdresse & "\" &  "small_" & strFichier & """><br>"'si pas erreur alors on affichera l'image dl
else
direc="une erreur c produite : "& Image.Error &"<br>"'si erreur alors on affiche l'erreur
end if
response.Write("Save : " & strAdresse & "\" &  "small_" &  strFichier & "<br>")

response.Write(direc)  
Set image=nothing
End sub


'------------------------------------------------------------------------------------------------------------------

if request.queryString("Action")="Upload" then
response.expires=0 'ça je sais pas
response.buffer=true'ça je sais pas non plus


On error resume next' Gérer les erreur
' Variables

Dim mySmartUpload 'ce qui permet d'up le fichier

Dim strAdr 'Adresse du fichier

Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")' Création de l'Objet







strAdr=Server.MapPath("\Tests\Upload\")'à changer pour installer ou vous le voulez

'--- Upload les fichiers à l'adresse strAdr
UploaderFichier mySmartUpload, strAdr

set mySmartUpload=nothing'Si aucune erreur s'est produite on redirige vers uploadok.asp



End if
%>
<form method="POST" action="index.asp?action=Upload" enctype="multipart/form-data">
<input type="file" name="Fichier1" size="20"><br>
<input type="submit" value="uploader" name="action">
</form>
</body>
</html>

signaler à un administrateur
Commentaire de fr64 le 06/10/2004 17:38:04

Le composant d'évaluation que l'on récupére sur le site du fournisseur est toujours anti daté. Pour faire des tests, il faut reculer la date du serveur.

signaler à un administrateur
Commentaire de monsieurtruc le 27/01/2006 11:43:01

Salut,

ça marche plutôt bien, mais je cherche à créer deux images en même temps.
C'est à dire une basse def et une vignette.

Est-ce que le composant le gère ?

Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

[ASP.NET, C#] Upload d'image, et affichage de la miniature [ par chocobo76 ] Bonjour à tous !Je suis en train de développer un site web pour mon entreprise, et j'aurais besoin de vos conseils...Je cherche à intégrer dans ma pag [débutant] Ma WebApp ASP.NET n'affiche aucune image, Pourquoi ?? [ par godvicien ] Salut a tous !Je suis ingénieur C# et habituellement je développe en WinForms. Mais j'ai besoin de créer une "WebSkin" pour mon logiciel DotNet.J'ai d tableau en ASP.NET [ par sofiesofie ] bonsoir, je suis débutante en ASP.NET,c'est la premier fois que j'utilise ASP.NET de Visual Studio 2005je veux dessiner un tableau principale qui cont charger une image un fichier [ par korabika ] salut;je voudrais savoir comment charger un fichier puis l'enregistrer dans la base de données, et  pouvoir ensuite de le visualiser , est ce que seul affichage d'une image [ par blanchess ] Bonjour, J'ai une textbox  asp  nommée "typecarte". dans mon projet.cette variable changera selon l'etat du client j'ai aussi une image  nommée im1 J' insertion d'image [ par fati1984 ] bonjour tout le monde je travaille en asp et je trouve une diffecultée dans l'affichage de l'image dans un controle &lt;img&gt; et ce que quelqu'un pe Uploader une image dans une base de données [ par atinao ] Bonjour,Tout d'abord je me présente : étudiant en DUT SRC, je suis actuellement en stage à l'étranger (Wales) ou l'on m'apprend les joies de l'ASP.NET image+file [ par nazim_tafat ] je voudraisv mettre image telecharger a partire de fileupload dans Image1 et j'arrive pas a le faire si y a quelqun peux m'aider merci &lt;asp:FileUpl Refresh Image toute les secondes [ par jfcecile ] Bonjour, je cherche à rafraifir une image contenue dans une gridview toutes les 2 secondes&lt;asp<font Modifier dans un GridView [ par anapaul ] salut!je suis entrain de travailler sur une application d'archivage pour mon projet de fin d'etude a l'université,j'ai fait le lien entre la base de d


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.