Générer une vignette à partir d'une image jpeg/bmp, via l'objet aspimage


Contenu du snippet

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 / Exemple :


<%
'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.

A voir également

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.