В Интернете существует множество компонентов ASP, генерирующих миниатюры. Если ваше виртуальное пространство не поддерживает регистрацию новых компонентов, вы можете почувствовать, что ваш веб-сайт потерял свой блеск. Я не очень талантлив, поэтому объединил онлайн-ресурсы, чтобы написать программу создания миниатюр без компонентов только для справки.
Давайте сначала рассмотрим основы. Во-первых, мы знаем, что код для отображения изображений на странице выглядит следующим образом:
<img src=pic.gif border=0 ширина=300 высота=260>
src — это путь к изображению, граница управляет шириной края изображения, ширина — это длина изображения, а высота — это высота изображения. Генерация миниатюр фактически масштабируется до исходного размера. Но в целом, чтобы минимизировать искажения, мы будем масштабировать пропорционально. Поэтому получение размеров длины и ширины изображения стало основной задачей создания миниатюр.
Вот шаги для написания создания миниатюр без компонентов:
1. Получите размер изображения без компонентов
Не так давно, когда я впервые изучал ASP, я увидел статью, в которой использовался код ASCII для получения размера изображения без компонентов. Позже я попробовал и обнаружил, что размер изображений jpg не может отображаться правильно. Я проверил в Интернете и обнаружил, что многие сайты перепечатывали эту программу, но никто не указал на недостатки этой программы, а тем более не решил ее. решено. Позже я снова погуглил и, наконец, нашел статью, в которой рассказывалось об использовании ADODB.stream для получения размера изображения. В соответствии с представленным методом я изменил код внутри и попробовал его. Эффект действительно хороший. Теперь я поделюсь им. с тобой. :
Используйте ADODB.stream для получения общего класса размера изображения.
<%
'//////////// GPS: получить размер изображения ///////////////
'/////////////Используйте ADODB.stream для получения размера изображения///////////////
'/////////Цитируется Леоном (心清) 11 августа 2005 г.//////////
Класс GPS
Дим асо
Частный подкласс_инициализировать
Установите aso=CreateObject(Adodb.Stream)
aso.Mode=3
асо.Тип=1
aso.Открыть
Конец субтитра
Частный подкласс_Terminate
установить aso=ничего
Конец субтитра
Частная функция Bin2Str(Bin)
Дим И, ул.
Для I=1 в LenB(Bin)
clow=MidB(Бин,I,1)
если AscB(clow)<128, то
Str = Str & Chr(ASCB(клоу))
Еще
Я=Я+1
если I <= LenB(Bin), то Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
конецЕсли
Следующий
Bin2Str = Str
Конечная функция
Частная функция Num2Str(число,основание,линза)
'GPS (11 августа 2005 г.)
тусклый свет
Рет =
в то время как (число> = база)
ret = (базовое число мод) & ret
num = (число - число мод. база)/база
идти
Num2Str = вправо (строка (линза, 0) & num & ret, линза)
Конечная функция
Частная функция Str2Num(str,base)
'GPS (11 августа 2005 г.)
тусклый свет
врет = 0
от i=1 до len(str)
ret = ret *base + cint(mid(str,i,1))
следующий
Str2Num=рет
Конечная функция
Частная функция BinVal(bin)
'GPS (11 августа 2002 г.)
тусклый свет
врет = 0
для i = lenb(bin) до 1 шага -1
ret = ret *256 + ascb(midb(bin,i,1))
следующий
БинВал=рет
Конечная функция
Частная функция BinVal2(bin)
'GPS (11 августа 2002 г.)
тусклый свет
врет = 0
для i = 1 в lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
следующий
BinVal2=рет
Конечная функция
'///Ниже приведен код вызова///
Функция getImageSize(filespec)
'GPS (11 августа 2002 г.)
дим-рет(3)
aso.LoadFromFile(спец_файла)
bFlag=aso.read(3)
выберите регистр hex(binVal(bFlag))
корпус 4E5089:
асо.читать(15)
рет(0)=ПНГ
ret(1)=BinVal2(aso.read(2))
aso.read(2)
ret(2)=BinVal2(aso.read(2))
дело 464947:
aso.read(3)
рет(0)=ГИФ
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)
while(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)): цикл while p1=255, а не aso.EOS
если p1>191 и p1<196, то выйдите do else aso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)):цикл, пока p1<255, а не aso.EOS
цикл, пока истинно
асо.Читать(3)
врет(0)=JPG
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Read(2))
случай еще:
если left(Bin2Str(bFlag),2)=BM, то
aso.Читать(15)
врет(0)=БМП
ret(1)=binval(aso.Read(4))
ret(2)=binval(aso.Read(4))
еще
врет(0)=
конец, если
конец выбора
ret(3)=ширина= & ret(1) & высота=
& Рет(2)&
getimagesize=рет
Конечная функция
Конечный класс
%>
Скопируйте приведенный выше код, чтобы создать файл GPS.asp, чтобы общий класс для получения размера изображения без компонентов был в порядке.
2. Получите путь к изображению
Поскольку существует более одного изображения и изображения необходимо хранить по категориям, мы разработали в базе данных поле ImgURL для хранения относительного пути к изображению. Все загруженные картинки помещаем в папку images (подробно о том, как загружать картинки без компонентов, вдаваться не буду). Теперь мы сначала создадим страницу ShowImg.asp для отображения миниатюр и сопутствующей информации. Конкретная конструкция выглядит следующим образом:
картина:
Формат изображения:
Размер изображения:
Размер изображения:
Количество кликов:
Далее мы получаем абсолютный путь к изображению. Код выглядит следующим образом:
<%
'/////Получить абсолютный путь к ShowImg.asp/////
Тусклый CurFile
curFile=Server.mappath(Request.servervariables(PATH_INFO))
Dim curfilename,имя файла
'/////Относительный путь к картинке (хранится в базе данных)
cufilename=rs(ImgURL)
'/////Поскольку ShowImg.asp находится в том же каталоге, что и изображения, мы используем instrrev для получения пути к изображениям/////
имя_файла=left(curFile,instrrev(curFile,/))&cufilename
'/////Создание объекта класса GPS/////
Тусклый GetPicSize
Установите GetPicSize=новый GPS
Установите fs=Server.CreateObject(Scripting.FileSystemObject)
'/////Получить тип изображения/////
Dim PicSuffixName
PicSuffixName=fs.GetExtensionName(имя файла)
Dim PD '//Размер изображения
Тусклый PWidth, PHeight
Выберите вариант PicSuffixName
Чехол gif,bmp,jpg,png:
'/////Вызовите функцию GetImageSize в общем классе GPS, чтобы получить размер изображения/////
PD=GetPicSize.GetImageSize(имя файла)
PWidth=PD(1) '//Получаем ширину изображения
PHeight=PD(2) '//Получаем высоту изображения
Чехол SWF
PD=GetPicSize.GetImageSize(имя файла)
PWidth=PD(1) '//Получаем ширину Flash
PHeight=PD(2) '//Получаем высоту Flash
Другое дело
Конец выбора
Установить fs=Ничего
Установить GetPicSize=Ничего
%>
Скопируйте приведенный выше код в начало <body>, и все в порядке!
Конечно, некоторые люди скажут, что вам не обязательно использовать PATH_INFO для получения пути. Вы можете просто использовать server.mappath(). Ха-ха, у каждого свои предпочтения. Основная причина в том, что я могу использовать PATH_INFO. реализовать некоторые функции FSO и использовать server .mappath() не получилось, поэтому я продолжал использовать это.
3. Определите размер миниатюр
Эта часть кодекса находится в глазах смотрящего, и мудрые видят мудрость. Сначала нам нужно указать диапазон размеров отображения миниатюр, например: 300X260. Код можно написать так:
<%
Тусклый PXWidth, PXHeight
Dim Pp '//Пропорция
Если PWidth=0 или PWidth= Тогда
ПХВидс=0
ПХХигхт=0
Еще
Pp=FormatNumber(PWidth/PHeight,2) '//Соотношение сторон
Конец, если
Если PWidth>=PHeight Тогда
Если PWidth>=300 Тогда
ПХВидс=300
PXHeight=НомерФормата(300/Пп,0)
Еще
PXWidth=PШирина
PXHeight=PВысота
Конец, если
Еще
Если PHeight>=260 Тогда
ПХВысота=260
PXWidth=НомерФормата(260*Пп,0)
Еще
PXWidth=PШирина
PXHeight=PВысота
Конец, если
Конец, если
%>
Просто напишите приведенный выше код сразу после второго шага. Код при вызове следующий:
<img src=<%=curfilename%> border=0 width=<%=PXWidth%>
высота=<%=PXHeight%>>
Что касается формата изображения, вы можете использовать <%=PicSuffixName%>, чтобы получить его, а размер изображения можно записать как
<%
response.write PXWidth&X&PXHeight
%>
Размер изображения можно определить с помощью FSO.GetFileSize(filename), а количество кликов можно просто определить с помощью операторов SQL. Конкретное кодирование не будет описываться снова.
Таким образом, была написана программа создания миниатюр без компонентов. Возможно, она немного заимствована, но пока каждый сможет освоить этот метод, я считаю, что он будет значительно улучшен.