الموصى بها: ASP يحفظ الملفات عن بُعد إلى محلي ٪ وظيفة covereMoteFile (localfilename ، remotefileurl) saveremotefile = إعلانات قاتمة حقيقية ، استرجاع ، getRemotedata set retrieval = server.CreateBject
هناك العديد من مكونات ASP التي تولد الصور المصغرة على الإنترنت. إذا لم تدعم المساحة الافتراضية تسجيل مكونات جديدة ، فقد تشعر أن موقع الويب الخاص بك يفقد لونه. Xinqing ليست موهوبة ، ومدمجة مع الموارد عبر الإنترنت ، وكتبت برنامج Thumbnail الخالي من المكونات للرجوع إليه فقط.
دعونا نلقي نظرة على الأساسيات أولاً. بادئ ذي بدء ، نعلم أن الكود التالي يتم عرضه على الصفحة:
<img src = pic.gif الحدود = 0 عرض = 300 ارتفاع = 260>
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 = يمين (سلسلة (عدسة ، 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)
بينما (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:
يفعل
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) = العرض = & ret (1) والارتفاع =
& 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
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 ، يمكن كتابة الرمز على هذا النحو:
<٪
باهت 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
إنهاء إذا
إنهاء إذا
٪>
اكتب الرمز أعلاه مباشرة بعد الخطوة الثانية. الرمز عند الاتصال هو كما يلي:
<img src = <٪ = curfilename ٪> الحدود = 0 عرض = <٪ = pxwidth ٪>
الارتفاع = <٪ = pxheight ٪ >>
أما بالنسبة لتنسيق الصورة ، يمكن كتابة حجم الصورة باسم
<٪
Response.write pxwidth & x & pxheight
٪>
يمكن تحقيق حجم الصورة باستخدام fso.getFilesize (اسم الملف) ، في حين يمكن تحقيق عدد النقرات ببساطة باستخدام عبارات SQL ، وبالتالي لن يتم وصف الترميز المحدد.
وبهذه الطريقة ، سيتم كتابة برنامج الصورة المصغرة الخالية من المكونات ، والذي قد يكون من الحكمة بعض الشيء ، ولكن طالما يمكنك إتقان الطريقة ، فسيتم تحسينه بشكل كبير.
مشاركة: تحميل خالي من مكونات ASP مع شريط التقدم الحقيقي التحميل الخالي من مكونات ASP مع شريط التقدم الحقيقي دون تحميل خالي من المكونات مع شريط التقدم الحقيقي ، حيث upload.asp هو الرمز الأساسي. ما لم تكن بحاجة إلى ذوي الاحتياجات الخاصة ، فإن Demo.htm هو عرض مظاهرة بدون تحديث شريط تقدم (IE5.5+ دعم). Demo.asp هو ملف تم تحميله بواسطة Demo.asp. لأن العرض التوضيحي يتطلب ذلك ، يتم تحميله فقط في demo.asp ولا يحفظه. إذا كنت بحاجة إلى حفظه ، فأنت بحاجة فقط إلى إزالة المرتبطة