هناك العديد من مكونات ASP التي يمكن أن تنشئ الصور المصغرة على الإنترنت. إذا كانت المساحة الافتراضية الخاصة بك لا تدعم تسجيل مكونات جديدة ، فقد تشعر أن موقع الويب الخاص بك قد فقد بريقه. هل تعرف الخطوات لإنشاء الصور المصغرة بدون مكونات؟ دعنا نتعرف على ذلك مع محرر قناة التكنولوجيا الجديدة الخاطئة!
توليد الصور المصغرة بدون مكونات
دعونا نلقي نظرة على الأساسيات أولاً. بادئ ذي بدء ، نعلم أن الكود التالي يتم عرضه على الصفحة:
SRC هو مسار الصورة ، ويتحكم الحدود في عرض الحافة للصورة ، والعرض هو طول الصورة ، والارتفاع هو ارتفاع الصورة. إن توليد الصور المصغرة في الواقع يتوسع في الحجم الأصلي. ولكن بشكل عام ، من أجل تقليل التشويه ، سنقوم بتوسيع نطاق. لذلك ، يصبح الحصول على طول وعرض الصورة محور توليد الصور المصغرة.
فيما يلي خطوات كتابة جيل مصغرة خالية من المكونات:
1. احصل على حجم الصورة بدون مكونات
لقد رأيت مقالًا باستخدام رمز ASCII للحصول على أحجام الصور بدون مكونات عندما تعلمت لأول مرة ASP. في وقت لاحق ، جربتها ووجدت أنه عندما حصلت على حجم صور تشبه JPG ، راجعت ذلك عبر الإنترنت ووجدت أن العديد من مواقع الويب أعيد طبع هذا البرنامج ، لكن لم يشير أي منها إلى عيوب هذا البرنامج ، ناهيك عن حل العيوب. في وقت لاحق ذهبت إلى Googlet وأخيراً وجدت مقالًا يقدم استخدام Adodb.stream للحصول على أحجام الصور. جربته عن طريق تعديل الكود في الداخل وفقًا للطريقة التي تم تقديمها. التأثير جيد حقًا. الآن سأخرجها وأشاركها معك:
استخدم adodb.stream للحصول على الفئة المشتركة <٪ من حجم الصورة
'////////////// GPS: احصل على حجم الصورة ///////////////
'/////////////////////////////////////
'///////////////2
GPS فئة
قاتمة أسو
sub class_initialize الخاص
SET ASO = createObject ("Adodb.stream")
aso.mode = 3
aso.type = 1
ASO.Open
نهاية الفرعية
sub class_terminate الخاص
تعيين ASO = لا شيء
نهاية الفرعية
الوظيفة الخاصة bin2str (صندوق)
خافت أنا ، شارع
لأني = 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
ret = ""
بينما (num> = قاعدة)
RET = (قاعدة Mod) و RET
num = (num - num mod base)/base
ويند
num2str = right (سلسلة (عدسة ، "0") و num & ret ، عدسة)
وظيفة نهاية
وظيفة خاصة str2num (Str ، قاعدة)
'GPS (2005-8-11)
قاتمة RET
RET = 0
لأني = 1 إلى لين (str)
ret = ret *base + cint (mid (str ، i ، 1))
التالي
str2num = ret
وظيفة نهاية
الوظيفة الخاصة Binval (BIN)
'GPS (2002-8-11)
قاتمة RET
RET = 0
ل I = lenb (bin) إلى خطوة واحدة -1
RET = RET *256 + ASCB (MIDB (BIN ، I ، 1))
التالي
binval = ret
وظيفة نهاية
الوظيفة الخاصة binval2 (BIN)
'GPS (2002-8-11)
قاتمة RET
RET = 0
لأني = 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)
حدد Case 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 = منتصف (SCONV ، 6)
بينما (لين (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":
يفعل
do: p1 = binval (aso.read (1)): حلقة بينما p1 = 255 وليس aso.eos
إذا كان P1> 191 و P1 <196 ، فقم بالخروج من else aso.read (binval2 (aso.read (2))-2)
do: 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) &" "height =" "" & ret (2) & "" "" ""
getImagesize = ret
وظيفة نهاية
الطبقة النهائية
٪>
انسخ الرمز أعلاه لإنشاء ملف gps.asp ، بحيث تكون الفئة العامة بدون مكون للحصول على حجم الصورة على ما يرام.
2. احصل على مسار الصورة
نظرًا لأن أكثر من صورة واحدة والصور يجب تخزينها بطريقة مصنفة ، فقد صممنا حقل Imgurl الذي يخزن المسار النسبي للصورة في قاعدة البيانات. وضعنا جميع الصور التي تم تحميلها في مجلد يسمى الصور (أما بالنسبة لكيفية تحميل الصور بدون مكونات ، فلن أقول الكثير). الآن دعنا نتصميم صفحة showimg.asp لعرض الصور المصغرة والمعلومات ذات الصلة. التصميم المحدد على النحو التالي:
صورة:
تنسيق الصورة:
حجم الصورة:
حجم الصورة:
عدد النقرات:
أدناه ، نحصل على المسار المطلق إلى الصورة. الرمز كما يلي:
<٪
'///// احصل على المسار المطلق لـ showimg.asp /////
دافئ دافئ
curfile = server.mappath (request.servervariables ("path_info"))
قاتم الكورفيلن ، اسم الملف
'/////المسار النسبي للصورة (مخزنة في قاعدة البيانات)
cufilename = rs ("imgurl")
'///// لأن showimg.asp موجود في نفس الدليل مثل الصور ، نستخدم InstREV للحصول على مسار الصور /////
اسم الملف = اليسار (التجانيد ، instrev (مجلسل ، "/")) و cufilename
'///// إنشاء كيان GPS /////
قاتمة getpicsize
تعيين getpicsize = GPS جديد
set fs = server.createObject ("scripting.filesystemObject")
'///// احصل على نوع الصورة /////
قاتمة picsuffixname
picsuffixname = fs.getextensionName (اسم الملف)
باهت PD '// بُعد الصورة
باهت 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 ، يمكن كتابة الرمز على هذا النحو:
<٪
باهت pxwidth ، pxheight
قاتمة pp '// نسبة
إذا pwidth = 0 أو pwidth = "" ثم
pxwidth = 0
pxheight = 0
آخر
pp = formatnumber (pwidth/pheight ، 2) '// نسبة إضافة width
إنهاء إذا
إذا 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
إنهاء إذا
إنهاء إذا
٪>
اكتب الرمز أعلاه مباشرة بعد الخطوة الثانية. الرمز عند الاتصال هو كما يلي:
الحدود = "0" العرض = <٪ = pxwidth ٪> الارتفاع = <٪ = pxheight ٪ >>
أما بالنسبة لتنسيق الصورة ، يمكنك استخدام <٪ = picsuffixname ٪> ، ويمكن كتابة حجم الصورة باسم
<٪
استجابة. write pxwidth & "x" & pxheight
٪>
يمكن تحقيق حجم الصورة باستخدام fso.getFilesize (اسم الملف) ، في حين يمكن تحقيق عدد النقرات ببساطة باستخدام عبارات SQL ، وبالتالي لن يتم وصف الترميز المحدد.
وبهذه الطريقة ، سيتم كتابة برنامج الصورة المصغرة الخالية من المكونات ، والذي قد يكون من الحكمة بعض الشيء ، ولكن طالما يمكنك إتقان الطريقة ، فسيتم تحسينه بشكل كبير. >
المقالة أعلاه تدور حول طريقة تشغيل الصور المصغرة بدون مكونات. أعتقد أن كل شخص لديه فهم معين. إذا كنت ترغب في معرفة المزيد من المعلومات الفنية ، فيرجى الاستمرار في الانتباه إلى قناة التكنولوجيا الجديدة الخاطئة!