มีองค์ประกอบ ASP มากมายที่สามารถสร้างภาพขนาดย่อบนอินเทอร์เน็ต หากพื้นที่เสมือนของคุณไม่สนับสนุนการลงทะเบียนส่วนประกอบใหม่คุณอาจรู้สึกว่าเว็บไซต์ของคุณสูญเสียความเป็นเงา คุณรู้ขั้นตอนในการสร้างภาพขนาดย่อโดยไม่มีส่วนประกอบหรือไม่? มาเรียนรู้เกี่ยวกับมันกับบรรณาธิการของช่องทางเทคโนโลยีที่ไม่ถูกต้อง!
สร้างภาพขนาดย่อโดยไม่มีส่วนประกอบ
มาดูพื้นฐานก่อน ก่อนอื่นเรารู้ว่ารหัสต่อไปนี้จะปรากฏบนหน้า:
SRC เป็นเส้นทางของภาพเส้นขอบควบคุมความกว้างของขอบของภาพความกว้างคือความยาวของภาพและความสูงคือความสูงของภาพ การสร้างรูปขนาดย่อนั้นปรับขนาดตามขนาดดั้งเดิม แต่โดยทั่วไปเพื่อลดการบิดเบือนเราจะขยายขนาด ดังนั้นการได้รับความยาวและความกว้างของภาพจึงกลายเป็นจุดสนใจของการสร้างภาพขนาดย่อ
นี่คือขั้นตอนในการเขียนรูปขนาดย่อที่ปราศจากองค์ประกอบ:
1. รับขนาดภาพโดยไม่มีส่วนประกอบ
ฉันเห็นบทความที่ใช้รหัส ASCII เพื่อรับขนาดภาพโดยไม่มีส่วนประกอบเมื่อฉันเรียนรู้ ASP เป็นครั้งแรก ต่อมาฉันลองและพบว่าเมื่อฉันมีขนาดของภาพเหมือน JPG ฉันตรวจสอบออนไลน์และพบว่าเว็บไซต์หลายแห่งพิมพ์โปรแกรมนี้ แต่ไม่มีใครชี้ให้เห็นข้อบกพร่องของโปรแกรมนี้ ต่อมาฉันไป googled และในที่สุดก็พบบทความที่แนะนำการใช้ AdoDB.stream เพื่อรับขนาดภาพ ฉันลองโดยการแก้ไขรหัสภายในตามวิธีที่แนะนำ เอฟเฟกต์ดีจริงๆ ตอนนี้ฉันจะนำมันออกมาและแบ่งปันกับคุณ:
ใช้ adodb.stream เพื่อรับคลาสทั่วไป <% ของขนาดภาพ
'/////////////////////ard: รับภาพขนาด ////////////////////////////////////
-
'/////////////////ard โดย Leon (Xinqing) 11 สิงหาคม 2548 //////////////////
GPS ชั้นเรียน
หม
คลาสย่อย class_initialize
ตั้งค่า 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)
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
กรณี "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 = ไม่มีอะไร
-
คัดลอกรหัสข้างต้นไปที่ *4) >>
ข้างต้นก็โอเค!
แน่นอนบางคนอาจบอกว่าคุณไม่จำเป็นต้องใช้ 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
สิ้นสุดถ้า
สิ้นสุดถ้า
-
เขียนรหัสข้างต้นทันทีหลังจากขั้นตอนที่สอง รหัสเมื่อโทรมีดังนี้:
border = "0" width = <%= pxWidth%> ความสูง = <%= pxHeight%>>
สำหรับรูปแบบภาพคุณสามารถใช้ <%= picsuffixName%> และขนาดภาพสามารถเขียนได้
-
Response.write pxwidth & "x" & pxheight
-
ขนาดภาพสามารถทำได้โดยใช้ FSO.GetFilesize (ชื่อไฟล์) ในขณะที่จำนวนการคลิกสามารถทำได้ง่ายๆโดยใช้คำสั่ง SQL ดังนั้นการเข้ารหัสเฉพาะจะไม่ถูกอธิบายอีกต่อไป
ด้วยวิธีนี้โปรแกรมภาพขนาดย่อที่ปราศจากองค์ประกอบจะถูกเขียนซึ่งอาจฉลาดเล็กน้อย แต่ตราบใดที่คุณสามารถเชี่ยวชาญวิธีการมันจะดีขึ้นอย่างมาก -
บทความข้างต้นเกี่ยวกับวิธีการดำเนินการของการสร้างภาพขนาดย่อโดยไม่มีส่วนประกอบ ฉันเชื่อว่าทุกคนมีความเข้าใจที่แน่นอน หากคุณต้องการทราบข้อมูลทางเทคนิคเพิ่มเติมโปรดดำเนินการต่อเพื่อให้ความสนใจกับช่องทางเทคโนโลยีใหม่ที่ไม่ถูกต้อง!