Recommandé: ASP enregistre les fichiers distants à local % Function SaveremOteFile (localFileName, RemoteFileUrl) SaveremoteFile = True Dim Ads, Retrieval, GetRemoData set Retrieval = Server.CreateObject (Microsoft.xmlhttp) avec la récupération .Open.
Il existe de nombreux composants ASP qui génèrent des miniatures sur Internet. Si votre espace virtuel ne prend pas en charge l'enregistrement de nouveaux composants, vous pouvez sentir que votre site Web perd sa couleur. Xinqing n'est pas talentueux et combiné avec des ressources en ligne, elle a écrit un programme de miniatures sans composant pour référence uniquement.
Jetons un coup d'œil aux bases en premier. Tout d'abord, nous savons que le code suivant s'affiche sur la page:
<img src = pic.gif border = 0 width = 300 height = 260>
SRC est le chemin d'image, la bordure contrôle la largeur du bord de l'image, la largeur est la longueur de l'image et la hauteur est la hauteur de l'image. La génération de miniatures est en fait évolutive sur la taille d'origine. Mais généralement, afin de minimiser la distorsion, nous évoluons à l'échelle. Par conséquent, l'obtention de la longueur et de la largeur de l'image devient au centre de la génération de vignettes.
Voici les étapes pour rédiger une génération de miniatures sans composants:
1. Obtenez la taille de l'image sans composants
J'ai vu un article utilisant le code ASCII pour obtenir des tailles d'image sans composants lorsque j'ai appris pour la première fois ASP. Plus tard, je l'ai essayé et j'ai découvert que lorsque j'ai obtenu la taille des images de type JPG, je l'ai vérifiée en ligne et j'ai trouvé que de nombreux sites Web ont réimprimé ce programme, mais aucun d'entre eux n'a souligné les défauts de ce programme, sans parler de la solution aux défauts. Plus tard, je suis allé googlé et j'ai finalement trouvé un article introduisant l'utilisation d'Adodb.stream pour obtenir des tailles d'image. Je l'ai essayé en modifiant le code à l'intérieur selon la méthode introduite. L'effet est vraiment bon. Maintenant, je vais le retirer et le partager avec vous:
Utilisez Adodb.stream pour obtenir la classe générale pour la taille de l'image
<%
'///////////////Gps: obtenez la taille de l'image //////////////
'//////////////////////////////////////
'//////////// cité par Leon (Xinqing) 11 août 2005 ///////////////
GPS de classe
ASO DIM
Private Sub class_inialize
Set aso = createObject (adodb.stream)
aso.mode = 3
aso.type = 1
aso.open
Sub-Sub
Sous-classe privée_terminée
Set ASO = Rien
Sub-Sub
Fonction privée bin2str (bin)
Dim I, str
Pour i = 1 à Lenb (poubelle)
CLOW = midb (bac, i, 1)
Si ASCB (CLOW) <128 alors
Str = str & chr (ascb (Clow))
Autre
I = i + 1
Si je <= Lenb (bin) alors str = str & chr (ascw (midb (bin, i, 1) & clow)))
terminer si
Suivant
Bin2str = str
Fonction finale
Fonction privée num2str (num, base, objectif)
'GPS (2005-8-11)
dim retr
ret =
While (num> = base)
ret = (num mod base) & ret
num = (num - num mod base) / base
se promener
Num2str = droite (chaîne (objectif, 0) & num & ret, objectif)
Fonction finale
Fonction privée str2num (str, base)
'GPS (2005-8-11)
dim retr
ret = 0
pour i = 1 à Len (str)
ret = ret * base + cint (mid (str, i, 1))
suivant
Str2num = ret
Fonction finale
Fonction privée binval (poubelle)
'GPS (2002-8-11)
dim retr
ret = 0
pour i = Lenb (bin) à 1 étape -1
ret = ret * 256 + ascb (midb (bin, i, 1))
suivant
Binval = ret
Fonction finale
Fonction privée binval2 (bac)
'GPS (2002-8-11)
dim retr
ret = 0
pour i = 1 à Lenb (poubelle)
ret = ret * 256 + ascb (midb (bin, i, 1))
suivant
Binval2 = ret
Fonction finale
'/// Ce qui suit est le code d'appel ///
Fonction getImageSize (filespec)
'GPS (2002-8-11)
Dim Ret (3)
aso.loadFromfile (filespec)
bflag = aso.read (3)
Sélectionnez Case Hex (Binval (BFLAG))
Cas 4E5089:
aso.read (15)
ret (0) = png
ret (1) = binval2 (aso.read (2))
aso.read (2)
ret (2) = binval2 (aso.read (2))
Cas 464947:
aso.read (3)
ret (0) = gif
ret (1) = binval (aso.read (2))
ret (2) = binval (aso.read (2))
Cas 535746:
aso.read (5)
bindata = aso.read (1)
SCONV = num2str (ASCB (bindata), 2,8)
nbits = str2num (gauche (SCONV, 5), 2)
SCONV = MID (SCONV, 6)
tandis que (Len (SCONV) <nbits * 4)
bindata = aso.read (1)
SCONV = SCONV & NUM2STR (ASCB (BINDATA), 2,8)
se promener
ret (0) = swf
Ret (1) = int (ABS (str2num (mid (SCONV, 1 * nbits + 1, nbits), 2) -str2num (mid (sconv, 0 * nbits + 1, nbits), 2)) / 20)
Ret (2) = int (ABS (str2num (mid (SCONV, 3 * nbits + 1, nbits), 2) -str2num (mid (sconv, 2 * nbits + 1, nbits), 2)) / 20)
cas ffd8ff:
faire
do: p1 = binval (aso.read (1)): boucle tandis que p1 = 255 et non aso.eos
Si p1> 191 et p1 <196, alors sortez faire else aso.read (binval2 (aso.read (2)) - 2)
do: p1 = binval (aso.read (1)): boucle tandis que p1 <255 et non aso.eos
boucle tandis que vrai
aso.read (3)
ret (0) = jpg
ret (2) = binval2 (aso.read (2))
ret (1) = binval2 (aso.read (2))
cas aille:
Si vous êtes laissé (bin2str (bflag), 2) = bm alors
aso.read (15)
ret (0) = bmp
ret (1) = binval (aso.read (4))
ret (2) = binval (aso.read (4))
autre
ret (0) =
terminer si
fin de sélection
ret (3) = largeur = & ret (1) et hauteur =
& ret (2) &
getImageSize = ret
Fonction finale
Classe finale
%>
Copiez le code ci-dessus pour générer un fichier GPS.asp, afin que la classe générale sans composant pour obtenir la taille de l'image soit OK.
2. Obtenez le chemin d'image
Étant donné que plus d'une image et que les images doivent être stockées de manière classifiée, nous avons conçu un champ Imgurl qui stocke le chemin relatif de l'image dans la base de données. Nous avons mis toutes les images téléchargées dans un dossier appelé Images (comme pour télécharger des images sans composants, je ne dirai pas grand-chose). Maintenant, concevons une page showimg.asp pour afficher les miniatures et les informations connexes. La conception spécifique est la suivante:
image:
Format d'image:
Taille de l'image:
Taille de l'image:
Nombre de clics:
Ci-dessous, nous obtenons le chemin absolu vers l'image. Le code est le suivant:
<%
'///// Obtenez le chemin absolu de ShowImg.asp /////
Curnile faible
curfile = server.mappath (request.servervariables (path_info))
Dim curfilename, nom de fichier
'///// Le chemin relatif de l'image (stocké dans la base de données)
cufilename = rs (imgurl)
'///// Parce que ShowImg.asp est dans le même répertoire que les images, nous utilisons Instrev pour obtenir le chemin d'images ///////
FileName = Left (Curfile, Instrev (Curfile,)) et CuFilename
'///// Créer une entité GPS /////
Dim GetpicSize
Set GetPicSize = Nouveau GPS
Set fs = server.createObject (scripting.fileSystemObject)
'///// Obtenez le type d'image /////
Dim picsuffixname
PicsuffixName = fs.getExtensionName (nom de fichier)
DIM PD '// Dimension d'image
Pwidth sombre, Pheight
Sélectionnez Case PicsuffixName
Case GIF, BMP, JPG, PNG:
'///// Appelez la fonction GetImageSize dans la classe générale GPS pour obtenir la taille de l'image /////
Pd = getPicSize.getImageSize (nom de fichier)
Pwidth = pd (1) '// obtenir la largeur de l'image
Pheight = Pd (2) '// Obtenez la hauteur de l'image
Cas swf
Pd = getPicSize.getImageSize (nom de fichier)
Pwidth = pd (1) '// obtenir la largeur du flash
Pheight = Pd (2) '// Obtenez une hauteur de flash
Cas d'autre
Fin de sélection
Définir FS = rien
Set getPicSize = rien
%>
Il est normal de copier le code ci-dessus dans le <body>!
Bien sûr, certaines personnes peuvent dire que vous n'avez pas à utiliser Path_info pour obtenir le chemin. Vous pouvez simplement utiliser Server.Mappath () directement. Haha, tout le monde a ses propres préférences. La raison principale est que je peux utiliser Path_info pour implémenter certaines fonctions de FSO, mais je ne l'ai pas fait avec server.mappath (), donc j'ai utilisé cela.
3. Définir la taille de la miniature
Cette partie du code est différente de sa propre opinion. Tout d'abord, nous devons spécifier la plage de taille de l'affichage des vignettes, par exemple: 300x260, le code peut être écrit comme ceci:
<%
Dim pxWidth, pxheight
Dim pp '// proportion
Si pwidth = 0 ou pwidth = alors
PxWidth = 0
PxHeight = 0
Autre
Pp = formatNumber (pwidth / pheight, 2) '// rapport complémentaire
Terminer si
Si Pwidth> = Pheight alors
Si pwidth> = 300 alors
PxWidth = 300
PxHeight = formatNumber (300 / pp, 0)
Autre
PxWidth = pwidth
PxHeight = Pheight
Terminer si
Autre
Si Pheight> = 260 alors
PxHeight = 260
PxWidth = formatNumber (260 * pp, 0)
Autre
PxWidth = pwidth
PxHeight = Pheight
Terminer si
Terminer si
%>
Écrivez le code ci-dessus immédiatement après la deuxième étape. Le code lorsque l'appel est le suivant:
<img src = <% = curfilename%> border = 0 width = <% = pxwidth%>
hauteur = <% = pxheight% >>
Quant au format d'image, la taille de l'image peut être écrite comme
<%
Response.Write pxWidth & X & PxHeight
%>
La taille de l'image peut être obtenue à l'aide de fso.getFileSize (nom de fichier), tandis que le nombre de clics peut être réalisé simplement à l'aide d'instructions SQL, de sorte que le codage spécifique ne sera plus décrit.
De cette façon, un programme miniature sans composant sera écrit, ce qui peut être un peu sage, mais tant que vous pouvez maîtriser la méthode, il sera considérablement amélioré.
Partager: téléchargement sans composant ASP avec barre de progrès réel Téléchargement sans composant ASP avec une barre de progression réelle sans téléchargement sans composant avec une barre de progrès réelle, où upload.asp est le code central. Sauf si vous avez besoin de besoins spéciaux, Demo.htm est une démonstration sans rafraîchissement de la barre de progression (IE5.5 + support). Demo.asp est un fichier téléchargé par Demo.asp. Parce que la démo l'exige, elle n'est téléchargée que dans Demo.asp et ne l'enregistre pas. Si vous devez le sauvegarder, il vous suffit de supprimer le