Есть много компонентов ASP, которые могут генерировать миниатюры в Интернете. Если ваше виртуальное пространство не поддерживает регистрацию новых компонентов, вы можете почувствовать, что ваш сайт потерял свой блеск. Знаете ли вы шаги по созданию миниатюр без компонентов? Давайте узнаем об этом с редактором неправильного нового технологического канала!
Генерировать миниатюры без компонентов
Давайте сначала посмотрим на основы. Прежде всего, мы знаем, что на странице отображается следующий код:
SRC - это путь изображения, граница управляет шириной края изображения, ширина - длина изображения, а высота - высота изображения. Генерация миниатюр на самом деле масштабирует исходный размер. Но, как правило, чтобы минимизировать искажение, мы будем масштабироваться. Следовательно, получение длины и ширины изображения становится центром генерации миниатюр.
Вот шаги, чтобы написать генерацию миниатюрного гнева без компонентов:
1. Получите размер изображения без компонентов
Я видел статью, использующую код ASCII для получения размеров изображений без компонентов, когда я впервые выучил ASP. Позже я попробовал это и обнаружил, что когда я получил размер изображений, подобных JPG, я проверил его онлайн и обнаружил, что многие веб-сайты перепечатали эту программу, но ни один из них не указал на недостатки этой программы, не говоря уже о решении недостатков. Позже я пошел Googled и, наконец, нашел статью, в которой представлена использование Adodb.stream для получения размеров изображений. Я попробовал его, изменив код внутри в соответствии с введенным методом. Эффект действительно хорош. Теперь я возьму его и поделюсь с вами:
Используйте adodb.stream, чтобы получить общий класс <% размера изображения
'////////////// GPS: Get Picture Size //////////////
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Класс GPS
DIM ASO
Private sub class_initialize
Установить aso = createObject ("adodb.stream")
aso.mode = 3
aso.type = 1
aso.open
Конец суб
Приватный sub class_terminate
установить aso = ничего
Конец суб
Частная функция bin2str (bin)
Dim I, Str
Для i = 1 до lenb (bin)
Clow = MidB (Bin, I, 1)
Если ASCB (Clow) <128 Then
Str = str & chr (ascb (clow))
Еще
I = i+1
Если i <= lenb (bin), то str = str & chr (ascw (midb (bin, i, 1) и clow)))
конец, если
Следующий
Bin2str = str
Конечная функция
Частная функция num2str (num, base, объектив)
'GPS (2005-8-11)
Dim ret
ret = ""
While (num> = base)
ret = (база Num Mod) и RET
num = (num - num mod base)/base
Венд
Num2str = right (string (lens, "0") & num & ret, lens)
Конечная функция
Частная функция str2num (str, base)
'GPS (2005-8-11)
Dim ret
ret = 0
для i = 1 до Лена (Str)
ret = ret *base + cint (mid (str, i, 1))
следующий
Str2num = ret
Конечная функция
Частная функция Binval (Bin)
'GPS (2002-8-11)
Dim ret
ret = 0
для i = lenb (bin) до 1 шага -1
ret = ret *256 + ascb (midb (bin, i, 1))
следующий
Binval = ret
Конечная функция
Частная функция binval2 (bin)
'GPS (2002-8-11)
Dim ret
ret = 0
для i = 1 до lenb (bin)
ret = ret *256 + ascb (midb (bin, i, 1))
следующий
Binval2 = ret
Конечная функция
'/// Ниже приведено вызовочный код ///////
Функция getImagesize (filepec)
'GPS (2002-8-11)
Dim ret (3)
aso.loadfromfile (filepec)
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 = mid (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, то выход еще один 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. Получите путь изображения
Поскольку более одного изображения и изображений нужно хранить в классифицированном манере, мы разработали поле Имгурла, в котором хранится относительный путь изображения в базе данных. Мы помещаем все загруженные изображения в папку, называемую изображениями (что касается загрузки изображений без компонентов, я не буду много говорить). Теперь давайте разработаем страницу Showimg.asp для отображения миниатюр и связанной с ним информации. Конкретный дизайн заключается в следующем:
картина:
Формат изображения:
Размер изображения:
Размер изображения:
Количество кликов:
Ниже мы получаем абсолютный путь к изображению. Код заключается в следующем:
<%
'///// Получить абсолютный путь showimg.asp //////////////////////////////////
Тусклый крик
curfile = server.mappath (request.servervariables ("path_info")))))
Dim Curfilename, имя файла
'///// относительный путь изображения (хранящийся в базе данных)
cufilename = rs ("imgurl")
'////// Поскольку Showimg.asp находится в том же каталоге, что и изображения, мы используем Instrrev, чтобы получить путь изображений ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
filename = Left (curfile, instrrev (curpile, "/")) и cufilename
'///// Crait GPS Entity /////////////////
Dim Getpicsize
Установить GetPicsize = новый GPS
Установить fs = server.createObject ("scripting.filesystemobject")
'///// Получите тип изображения //////////////////////////////////////////s
Dim picsuffixName
Picsuffixname = fs.getextensionname (имя файла)
Dim Pd '// измерение изображения
Пямочная пятна, Фейт
Выберите 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 = ничего
%>
Скопировать приведенный выше код на *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 then
Если 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" ширина = <%= pxwidth%> height = <%= pxheight%>>
Что касается формата изображения, вы можете использовать <%= picsuffixName%>, и размер изображения может быть написан как
<%
response.write pxwidth & "x" & pxheight
%>
Размер изображения может быть достигнут с помощью fso.getFilesize (имя файла), в то время как количество кликов может быть достигнуто просто с использованием операторов SQL, поэтому конкретное кодирование больше не будет описано.
Таким образом, будет написана миниатюра без компонентов, которая может быть немного мудрой, но если вы можете освоить метод, она будет значительно улучшена. >
Приведенная выше статья посвящена методу работы генерации миниатюр без компонентов. Я считаю, что у всех есть определенное понимание. Если вы хотите узнать больше технической информации, пожалуйста, продолжайте обращать внимание на неправильный новый канал технологии!