แนะนำ: ASP บันทึกไฟล์ระยะไกลไปยัง Local % function saveremotefile (localfilename, remotefileurl) saveremotefile = โฆษณาสลัวจริง, การดึง, getremotedata set retrieval = server.createObject (Microsoft.xmlhttp)
มีองค์ประกอบ ASP มากมายที่สร้างภาพขนาดย่อบนอินเทอร์เน็ต หากพื้นที่เสมือนของคุณไม่สนับสนุนการลงทะเบียนส่วนประกอบใหม่คุณอาจรู้สึกว่าเว็บไซต์ของคุณสูญเสียสี Xinqing ไม่ได้มีความสามารถและรวมกับแหล่งข้อมูลออนไลน์เธอเขียนโปรแกรมภาพย่อที่ปราศจากองค์ประกอบเพื่ออ้างอิงเท่านั้น
มาดูพื้นฐานก่อน ก่อนอื่นเรารู้ว่ารหัสต่อไปนี้จะปรากฏบนหน้า:
<img src = pic.gif border = 0 width = 300 ความสูง = 260>
SRC เป็นเส้นทางของภาพเส้นขอบควบคุมความกว้างของขอบของภาพความกว้างคือความยาวของภาพและความสูงคือความสูงของภาพ การสร้างรูปขนาดย่อนั้นปรับขนาดตามขนาดดั้งเดิม แต่โดยทั่วไปเพื่อลดการบิดเบือนเราจะขยายขนาด ดังนั้นการได้รับความยาวและความกว้างของภาพจึงกลายเป็นจุดสนใจของการสร้างภาพขนาดย่อ
นี่คือขั้นตอนในการเขียนรูปขนาดย่อที่ปราศจากองค์ประกอบ:
1. รับขนาดภาพโดยไม่มีส่วนประกอบ
ฉันเห็นบทความที่ใช้รหัส ASCII เพื่อรับขนาดภาพโดยไม่มีส่วนประกอบเมื่อฉันเรียนรู้ ASP เป็นครั้งแรก ต่อมาฉันลองและพบว่าเมื่อฉันมีขนาดของภาพเหมือน JPG ฉันตรวจสอบออนไลน์และพบว่าเว็บไซต์หลายแห่งพิมพ์โปรแกรมนี้ แต่ไม่มีใครชี้ให้เห็นข้อบกพร่องของโปรแกรมนี้ ต่อมาฉันไป googled และในที่สุดก็พบบทความที่แนะนำการใช้ AdoDB.stream เพื่อรับขนาดภาพ ฉันลองโดยการแก้ไขรหัสภายในตามวิธีที่แนะนำ เอฟเฟกต์ดีจริงๆ ตอนนี้ฉันจะนำมันออกมาและแบ่งปันกับคุณ:
ใช้ adoDB.stream เพื่อรับคลาสทั่วไปสำหรับขนาดภาพ
-
'/////////////////////ard: รับภาพขนาด ////////////////////////////////////
-
'/////////////////ard โดย Leon (Xinqing) 11 สิงหาคม 2548 //////////////////
GPS ชั้นเรียน
หม
คลาสย่อย class_initialize
SET ASO = CreateObject (ADODB.Stream)
aso.mode = 3
aso.type = 1
aso.open
สิ้นสุดย่อย
คลาสย่อย class_terminate
ตั้งค่า aso = ไม่มีอะไร
สิ้นสุดย่อย
ฟังก์ชั่นส่วนตัว bin2str (bin)
dim i, str
สำหรับ i = 1 ถึง Lenb (bin)
clow = midb (bin, i, 1)
ถ้า ASCB (Clow) <128 แล้ว
str = str & chr (ascb (clow))
อื่น
i = i+1
ถ้าฉัน <= lenb (bin) จากนั้น str = str & chr (ascw (midb (bin, i, 1) & clow))
สิ้นสุดถ้า
ต่อไป
bin2str = str
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว num2str (num, ฐาน, เลนส์)
'GPS (2005-8-11)
หรี่
ret =
ในขณะที่ (num> = base)
ret = (ฐาน mod num) & ret
num = (num - num mod base)/ฐาน
ใช้
num2str = ขวา (สตริง (เลนส์, 0) & num & ret, เลนส์)
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว str2num (str, base)
'GPS (2005-8-11)
หรี่
ret = 0
สำหรับ i = 1 ถึง len (str)
ret = ret *base + cint (mid (str, i, 1))
ต่อไป
str2num = ret
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว binval (bin)
'GPS (2002-8-11)
หรี่
ret = 0
สำหรับ i = lenb (bin) ถึง 1 ขั้นตอน -1
ret = ret *256 + ascb (midb (bin, i, 1))
ต่อไป
binval = ret
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว binval2 (bin)
'GPS (2002-8-11)
หรี่
ret = 0
สำหรับ i = 1 ถึง Lenb (bin)
ret = ret *256 + ascb (midb (bin, i, 1))
ต่อไป
binval2 = ret
ฟังก์ชันสิ้นสุด
'/// ต่อไปนี้เป็นรหัสการโทร ///
ฟังก์ชั่น getImagesize (filespec)
'GPS (2002-8-11)
สลัว ret (3)
aso.loadfromfile (FileSpec)
bflag = aso.read (3)
เลือกกรณี hex (binval (bflag))
กรณี 4E5089:
aso.read (15)
ret (0) = png
ret (1) = binval2 (aso.read (2))
aso.read (2)
ret (2) = binval2 (aso.read (2))
กรณี 464947:
aso.read (3)
ret (0) = gif
ret (1) = binval (aso.read (2))
ret (2) = binval (aso.read (2))
กรณี 535746:
aso.read (5)
bindata = aso.read (1)
sconv = num2str (ascb (bindata), 2,8)
nbits = str2num (ซ้าย (sconv, 5), 2)
sconv = mid (sconv, 6)
ในขณะที่ (len (sconv) <nbits*4)
bindata = aso.read (1)
sconv = sconv & num2str (ascb (bindata), 2,8)
ใช้
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)
กรณี FFD8FF:
ทำ
ทำ: p1 = binval (aso.read (1)): ลูปในขณะที่ p1 = 255 และไม่ใช่ aso.eos
ถ้า p1> 191 และ p1 <196 จากนั้นออกจากทำ aso.read (binval2 (aso.read (2))-2)
ทำ: p1 = binval (aso.read (1)): ลูปในขณะที่ p1 <255 และไม่ใช่ aso.eos
วนวนในขณะที่จริง
aso.read (3)
ret (0) = jpg
ret (2) = binval2 (aso.read (2))
ret (1) = binval2 (aso.read (2))
กรณีอื่น:
ถ้าซ้าย (bin2str (bflag), 2) = bm แล้ว
aso.read (15)
ret (0) = bmp
ret (1) = binval (aso.read (4))
ret (2) = binval (aso.read (4))
อื่น
ret (0) =
สิ้นสุดถ้า
สิ้นสุดเลือก
ret (3) = width = & ret (1) & ความสูง =
& ret (2) &
getImagesize = ret
ฟังก์ชันสิ้นสุด
ชั้นเรียนจบ
-
คัดลอกรหัสด้านบนเพื่อสร้างไฟล์ gps.asp เพื่อให้คลาสทั่วไปที่ไม่มีส่วนประกอบที่จะได้รับขนาดภาพไม่เป็นไร
2. รับเส้นทางภาพ
เนื่องจากรูปภาพมากกว่าหนึ่งภาพและรูปภาพจะต้องเก็บไว้ในลักษณะที่จัดเราจึงออกแบบฟิลด์ imgurl ที่เก็บเส้นทางสัมพัทธ์ของรูปภาพในฐานข้อมูล เราใส่ภาพที่อัปโหลดทั้งหมดไว้ในโฟลเดอร์ที่เรียกว่ารูปภาพ (สำหรับวิธีการอัปโหลดภาพโดยไม่มีส่วนประกอบฉันจะไม่พูดอะไรมาก) ตอนนี้มาออกแบบหน้า showimg.asp เพื่อแสดงภาพขนาดย่อและข้อมูลที่เกี่ยวข้อง การออกแบบเฉพาะมีดังนี้:
รูปภาพ:
รูปแบบภาพ:
ขนาดภาพ:
ขนาดภาพ:
จำนวนคลิก:
ด้านล่างเราได้รับเส้นทางที่แน่นอนไปยังภาพ รหัสมีดังนี้:
-
'///// รับเส้นทางที่สมบูรณ์ของ showimg.asp /////////////////////
หม
curfile = server.mappath (request.serverVariables (path_info))
Dim Curfilename ชื่อไฟล์
'///// เส้นทางสัมพัทธ์ของภาพ (เก็บไว้ในฐานข้อมูล)
cufilename = rs (imgurl)
'///// เพราะ showimg.asp อยู่ในไดเรกทอรีเดียวกับรูปภาพเราใช้ Instrrev เพื่อรับเส้นทางของรูปภาพ ////
filename = ซ้าย (curfile, instrrev (curfile,)) & cufilename
'///// สร้างเอนทิตี GPS ////////////
dim getpicsize
ตั้งค่า getPicsize = GPS ใหม่
ตั้งค่า fs = server.createObject (scripting.filesystemobject)
'///// รับประเภทภาพ ///////////
สลัว picsuffixname
picsuffixName = fs.getExtensionName (ชื่อไฟล์)
Dim Pd '// มิติรูปภาพ
Dim Pwidth, pheight
เลือก case picsuffixname
Case GIF, BMP, JPG, PNG:
'///// เรียกฟังก์ชัน getImagesize ในคลาส GPS ทั่วไปเพื่อรับขนาดภาพ ///////////////
pd = getpicsize.getimagesize (ชื่อไฟล์)
pwidth = pd (1) '// รับความกว้างของรูปภาพ
pheight = pd (2) '// รับความสูงของภาพ
กรณี SWF
pd = getpicsize.getimagesize (ชื่อไฟล์)
pwidth = pd (1) '// รับความกว้างของแฟลช
pheight = pd (2) '// รับความสูงของแฟลช
กรณีอื่น
สิ้นสุดเลือก
ตั้งค่า fs = ไม่มีอะไร
ตั้งค่า getPicsize = ไม่มีอะไร
-
สามารถคัดลอกรหัสด้านบนไปยัง <body>!
แน่นอนบางคนอาจบอกว่าคุณไม่จำเป็นต้องใช้ PATH_INFO เพื่อรับเส้นทาง คุณสามารถใช้ server.mappath () โดยตรง ฮ่าฮ่าทุกคนมีความชอบของตัวเอง เหตุผลหลักคือฉันสามารถใช้ PATH_INFO เพื่อใช้ฟังก์ชั่นบางอย่างของ FSO แต่ฉันไม่ได้ทำกับ Server.mappath () ดังนั้นฉันจึงใช้สิ่งนี้
3. กำหนดขนาดภาพขนาดย่อ
ส่วนหนึ่งของรหัสนี้แตกต่างจากความเห็นของตนเอง ก่อนอื่นเราจำเป็นต้องระบุช่วงขนาดของการแสดงผลภาพขนาดย่อตัวอย่างเช่น: 300x260 รหัสสามารถเขียนได้เช่นนี้:
-
dim pxwidth, pxheight
Dim Pp '// สัดส่วน
ถ้า pwidth = 0 หรือ pwidth = จากนั้น
pxWidth = 0
pxHeight = 0
อื่น
pp = formatNumber (pwidth/pheight, 2) '// อัตราส่วนเพิ่มความกว้าง
สิ้นสุดถ้า
ถ้า pwidth> = pheight แล้ว
ถ้า pwidth> = 300 แล้ว
pxWidth = 300
pxHeight = formatNumber (300/pp, 0)
อื่น
pxWidth = pwidth
pxHeight = pheight
สิ้นสุดถ้า
อื่น
ถ้า pheight> = 260 แล้ว
pxHeight = 260
pxWidth = formatNumber (260*pp, 0)
อื่น
pxWidth = pwidth
pxHeight = pheight
สิ้นสุดถ้า
สิ้นสุดถ้า
-
เขียนรหัสข้างต้นทันทีหลังจากขั้นตอนที่สอง รหัสเมื่อโทรมีดังนี้:
<img src = <%= curfilename%> border = 0 width = <%= pxWidth%>
ความสูง = <%= pxheight%>>
สำหรับรูปแบบภาพขนาดภาพสามารถเขียนได้
-
Response.write pxwidth & x & pxheight
-
ขนาดภาพสามารถทำได้โดยใช้ FSO.GetFilesize (ชื่อไฟล์) ในขณะที่จำนวนการคลิกสามารถทำได้ง่ายๆโดยใช้คำสั่ง SQL ดังนั้นการเข้ารหัสเฉพาะจะไม่ถูกอธิบายอีกต่อไป
ด้วยวิธีนี้โปรแกรมภาพขนาดย่อที่ปราศจากองค์ประกอบจะถูกเขียนซึ่งอาจฉลาดเล็กน้อย แต่ตราบใดที่คุณสามารถเชี่ยวชาญวิธีการมันจะดีขึ้นอย่างมาก
แชร์: อัพโหลดฟรีส่วนประกอบ ASP ด้วยแถบความคืบหน้าจริง ASP-Free Upload ด้วยแถบความคืบหน้าจริงโดยไม่ต้องอัปโหลดฟรีส่วนประกอบด้วยแถบความคืบหน้าจริงโดยที่อัพโหลด. asp เป็นรหัสหลัก หากคุณไม่จำเป็นต้องมีความต้องการพิเศษ Demo.htm เป็นการสาธิตโดยไม่มีแถบความคืบหน้าการรีเฟรช (IE5.5+ สนับสนุน) Demo.asp เป็นไฟล์ที่อัปโหลดโดย demo.asp เนื่องจากการสาธิตต้องการมันจึงถูกอัปโหลดใน demo.asp เท่านั้นและไม่ได้บันทึกไว้ หากคุณต้องการบันทึกคุณจะต้องลบที่เกี่ยวข้องเท่านั้น