Empfohlen: ASP speichert Remotedateien in lokal % Funktion SaveremoteFile (LocalFileName, RemoteFileurl) SaveremoteFile = echte dim
Es gibt viele ASP -Komponenten, die im Internet Miniaturansichten generieren. Wenn Ihr virtueller Raum nicht unterstützt, neue Komponenten zu registrieren, haben Sie möglicherweise das Gefühl, dass Ihre Website ihre Farbe verliert. Xinqing ist nicht talentiert und in Kombination mit Online-Ressourcen schrieb sie nur als Referenzprogramm.
Schauen wir uns zuerst die Grundlagen an. Zunächst wissen wir, dass der folgende Code auf der Seite angezeigt wird:
<img src = pic.gif Border = 0 Breite = 300 Höhe = 260>
SRC ist der Bildpfad, der Rand steuert die Kantenbreite des Bildes, die Breite ist die Länge des Bildes und die Höhe der Höhe des Bildes. Die Generation von Miniaturansichten skaliert tatsächlich die ursprüngliche Größe. Um die Verzerrung zu minimieren, werden wir jedoch im Allgemeinen skaliert. Daher wird das Erhalten der Länge und Breite des Bildes zum Fokus der Erzeugung von Miniaturansichten.
Hier sind die Schritte zum Schreiben einer Komponenten-freien Miniaturansichterzeugung:
1. Holen Sie sich die Bildgröße ohne Komponenten
Ich habe einen Artikel mit ASCII -Code gesehen, um Bildgrößen ohne Komponenten zu erhalten, als ich zum ersten Mal ASP lernte. Später probierte ich es und stellte fest, dass ich es online überprüfte, als ich die Größe von JPG-ähnlichen Bildern bekam und festgestellt habe, dass viele Websites dieses Programm nachgedruckt haben, aber keiner von ihnen wies auf die Mängel dieses Programms hin, geschweige denn die Lösung für die Mängel. Später ging ich Googled und fand schließlich einen Artikel, in dem die Verwendung von adodb.stream eingeführt wurde, um Bildgrößen zu erhalten. Ich habe es versucht, indem ich den Code gemäß der eingeführten Methode geändert habe. Der Effekt ist wirklich gut. Jetzt werde ich es herausnehmen und mit Ihnen teilen:
Verwenden Sie adodb.stream, um die allgemeine Klasse für die Bildgröße zu erhalten
<%
'//////////////// GPS: Holen Sie sich die Bildgröße /////////////
'///////////////////////////////// ./////.
'//////////// zitiert von Leon (Xinqing) 11. August 2005 ///////////////////////////////////////////
Klasse GPS
Dim Aso
Private sub class_initialize
Setzen Sie ASO = createObject (adodb.stream)
ASO.MODE = 3
ASO.Type = 1
ASO.Open
Ende sub
Private sub class_terate
Setzen Sie ASO = nichts
Ende sub
Private Funktion Bin2str (Bin)
Dim i, str
Für i = 1 bis lenb (bin)
Clow = Midb (bin, i, 1)
Wenn ASCB (Clow) <128 dann
STR = STR & CHR (ASCB (Clow))
Anders
I = i+1
Wenn ich <= lenb (bin) dann Str = str & chr (ASCW (MIDB (Bin, I, 1) & Clow))
Ende wenn
Nächste
Bin2str = str
Endfunktion
Private Funktion Num2str (Num, Basis, Linse)
'GPS (2005-8-11)
Dim Ret
ret =
While (num> = base)
ret = (num mod base) & ret
num = (num - num mod base)/base
Wend
Num2str = rechts (String (Linse, 0) & Num & Ret, Objektiv)
Endfunktion
Private Funktion Str2num (STR, Basis)
'GPS (2005-8-11)
Dim Ret
ret = 0
für i = 1 bis len (str)
ret = ret *base + cint (mid (str, i, 1))
nächste
Str2num = ret
Endfunktion
Private Funktion Binval (Bin)
'GPS (2002-8-11)
Dim Ret
ret = 0
für i = lenb (bin) bis 1 Schritt -1
ret = ret *256 + ascb (Midb (bin, i, 1))
nächste
Binval = ret
Endfunktion
Private Funktion Binval2 (Bin)
'GPS (2002-8-11)
Dim Ret
ret = 0
für i = 1 bis lenb (bin)
ret = ret *256 + ascb (Midb (bin, i, 1))
nächste
Binval2 = ret
Endfunktion
'/// Folgendes ist der aufrufende Code ///
Funktion getImageSize (filespec)
'GPS (2002-8-11)
Dim Ret (3)
ASO.LOADFROMFILE (filespec)
Bflag = ASO.Read (3)
Wählen Sie Case Hex (Binval (Bflag))
Fall 4E5089:
ASO.Read (15)
ret (0) = png
Ret (1) = Binval2 (ASO.Read (2))
ASO.Read (2)
Ret (2) = Binval2 (ASO.Read (2))
Fall 464947:
ASO.Read (3)
ret (0) = gif
ret (1) = binval (aso.read (2))
ret (2) = binval (aso.read (2))
Fall 535746:
ASO.Read (5)
bindata = aso.read (1)
SCONV = Num2str (ASCB (Bindata), 2,8)
NBits = str2num (links (SCONV, 5), 2)
sconv = mid (sconv, 6)
while (len (sconv) <Nbits*4)
bindata = aso.read (1)
SCONV = SCONV & NUM2STR (ASCB (BINDATA), 2,8)
Wend
ret (0) = swf
ret (1) = int (ABS (STR2NUM (MID (SCHONV), 1*NBITS+1, NBITS), 2) -SR2NUM (MID (SCHONV, 0*NBITS+1, NBITS), 2))/20)
ret (2) = int (ABS (str2num (Mid (SCONV, 3*NBits+1, NBit), 2) -Str2num (MID (SCHONV, 2*NBITS+1, NBITS), 2))/20)
Fall FFD8ff:
Tun
Do: p1 = binval (ASO.Read (1)): Schleife während P1 = 255 und nicht ASO.eos
Wenn P1> 191 und P1 <196, dann beenden Sie sonst ASO.Read (Binval2 (ASO.Read (2))-2)
Do: p1 = binval (ASO.Read (1)): Schleife während P1 <255 und nicht ASO.eos
Schleife während wahr
ASO.Read (3)
ret (0) = jpg
Ret (2) = Binval2 (ASO.Read (2))
Ret (1) = Binval2 (ASO.Read (2))
Fall sonst:
Wenn Sie links (bin2str (Bflag), 2) = BM dann
ASO.Read (15)
ret (0) = bmp
ret (1) = binval (aso.read (4))
ret (2) = binval (aso.read (4))
anders
ret (0) =
Ende wenn
Ende auswählen
ret (3) = width = & ret (1) & Höhe =
& ret (2) &
getImagesize = ret
Endfunktion
Endklasse
%>
Kopieren Sie den oben genannten Code, um eine GPS.asp -Datei zu generieren, damit die allgemeine Klasse ohne Komponente, um die Bildgröße zu erhalten, in Ordnung ist.
2. Holen Sie sich den Bildpfad
Da mehr als ein Bild und die Bilder klassifiziert werden müssen, haben wir ein Feld imgurl entwickelt, das den relativen Pfad des Bildes in der Datenbank speichert. Wir haben alle hochgeladenen Bilder in einen Ordner namens Images eingelegt (wie zum Hochladen von Bildern ohne Komponenten, ich werde nicht viel sagen). Entwerfen wir nun eine Seite "showimg.asp", um Miniaturansichten und verwandte Informationen anzuzeigen. Das spezifische Design lautet wie folgt:
Bild:
Bildformat:
Bildgröße:
Bildgröße:
Anzahl der Klicks:
Im Folgenden erhalten wir den absoluten Weg zum Bild. Der Code ist wie folgt:
<%
'///// Erhalten Sie den absoluten Weg von showimg.asp //////
Schwacher Einbruch
Curpile = Server.MAppath (Request.Servervariables (Path_info))
Dimer Curfilename, Dateiname
'///// der relative Pfad des Bildes (in der Datenbank gespeichert)
cufileName = rs (imgurl)
'/////, weil Showimg.asp im selben Verzeichnis wie Bilder ist. Wir verwenden Instrev, um den Pfad der Bilder ///// zu erhalten
Dateiname = links (Curde, Instrrev (Curde) & CufileName
'///// GPS -Entität erstellen /////
Dim getPicssize
Setzen Sie GetPicSize = New GPS
Setzen Sie fs = server.createObject (scripting.FilesystemObject)
'///// Erhalten Sie den Bildtyp /////
Schwacher Picsuffixname
Picsuffixname = fs.getExtensionName (Dateiname)
Dim Pd '// Bilddimension
Dim Pwidth, Pheight
Wählen Sie Case Picsuffixname
Case GIF, BMP, JPG, PNG:
'///// rufe die Funktion getImagesize in der GPS -Generalklasse an, um die Bildgröße ///// zu erhalten
Pd = getPicSize.getImageSize (Dateiname)
Pwidth = pd (1) '// Bildbreite holen
Pheight = pd (2) '// Bildhöhe erhalten
Fall SWF
Pd = getPicSize.getImageSize (Dateiname)
Pwidth = pd (1) '// Flash Breite abrufen
Pheight = pd (2) '// Flash -Höhe erhalten
Fall sonst
Ende auswählen
Setzen Sie fs = nichts
Setzen Sie GetPicSize = nichts
%>
Es ist in Ordnung, den obigen Code in die <body> zu kopieren!
Natürlich können einige Leute sagen, dass Sie PATH_INFO nicht verwenden müssen, um den Pfad zu erhalten. Sie können einfach Server.Mappath () direkt verwenden. Haha, jeder hat seine eigenen Vorlieben. Der Hauptgrund ist, dass ich PATH_INFO verwenden kann, um einige Funktionen von FSO zu implementieren, aber ich habe es nicht mit server.mappath () gemacht, also habe ich das verwendet.
3. Definieren Sie die Miniaturansichtgröße
Dieser Teil des Code unterscheidet sich von der eigenen Meinung. Zunächst müssen wir den Größenbereich der Miniaturansichtsanzeige angeben, zum Beispiel: 300x260, der Code kann so geschrieben werden:
<%
Dim Pxwidth, pxHeight
Dim pp '// proportional
Wenn pwidth = 0 oder pwidth = dann
Pxwidth = 0
PxHeight = 0
Anders
Pp = formatnumber (pwidth/pheight, 2) '// Add-Width-Verhältnis
Ende wenn
Wenn pwidth> = pheight dann
Wenn pwidth> = 300 dann
Pxwidth = 300
PxHeight = formatnumber (300/pp, 0)
Anders
Pxwidth = pwidth
PxHeight = pheight
Ende wenn
Anders
Wenn Pheight> = 260 dann
PxHeight = 260
Pxwidth = formatnumber (260*pp, 0)
Anders
Pxwidth = pwidth
PxHeight = pheight
Ende wenn
Ende wenn
%>
Schreiben Sie den obigen Code sofort nach dem zweiten Schritt. Der Code beim Aufrufen lautet wie folgt:
<img src = <%= curfileName%> Grenze = 0 Breite = <%= pxwidth%>
Höhe = <%= pxHeight%>>
Was das Bildformat betrifft, kann die Bildgröße als geschrieben werden
<%
Antwort.Write pxwidth & x & pxHeight
%>
Die Bildgröße kann mit FSO.getFileSize (Dateiname) erreicht werden, während die Anzahl der Klicks einfach mit SQL -Anweisungen erreicht werden kann, sodass die spezifische Codierung nicht mehr beschrieben wird.
Auf diese Weise wird ein komponentenfreies Miniaturansatzprogramm geschrieben, das möglicherweise etwas klug ist, aber solange Sie die Methode beherrschen können, wird es erheblich verbessert.
Teilen: ASP-Komponentenfreiem Upload mit echter Fortschrittsleiste ASP-Komponentenfreies Upload mit realer Fortschrittsleiste ohne Komponentenfreiem Upload mit realer Fortschrittsleiste, wobei Upload.asp der Kerncode ist. Sofern Sie keine besonderen Bedürfnisse benötigen, ist Demo.htm eine Demonstration ohne Auffrischungsleiste (dh 5.5+ Unterstützung). Demo.asp ist eine von Demo.asp hochgeladene Datei. Da die Demo es erfordert, wird sie nur in Demo.asp hochgeladen und speichert sie nicht. Wenn Sie es speichern müssen, müssen Sie nur die Relevanten entfernen