让我们来看一下基础。首先,我们知道页面中图片的显示是下面的代码:


U3000 U3000

SRC是图像的路径、边界控制画面边缘的宽度,宽度是图片的长度和高度是图片的高度。缩略图的生成实际上是在原来的尺寸放大。但总的来说,为了尽量减少失真,我们将它作为规模比例。结果是,画面的长度和宽度也是缩略图生成的焦点。

下面是编写无组件缩略图生成的步骤。

1。没有组件获得图片的大小

在过去,ASP最近看到一篇文章使用ASCII代码来实现组件对图片大小的自由访问。后来,经过测试,发现JPG类图像的大小不能正确显示。有许多网站转载的程序,但是他们没有指出该程序的缺陷,因此它是解决缺陷更加困难。后来,谷歌,终于找到了关于使用adodb.stream得到图片的大小的一篇文章。按照它介绍的方式,它尝试修改代码,结果非常好。现在我和你分享。

使用adodb.stream图像尺寸的通用类

<
全球定位系统:获得图片大小
/ / / / / / / / / / / / / /使用adodb.stream获得图像大小 / / / / / / / / / / / / / /
列昂()所引用的

类GPS
昏暗的ASO

私有子class_initialize
集麻生太郎= CreateObject(数据流)
模式= 3
Aso,类型= 1
麻生太郎开。
端子

私有子class_terminate
设置无
端子

私有函数bin2str(仓)
我,Str
我= 1 lenb(仓)
克洛=多重交替焙烘显影工艺(Bin,我,1)
如果AscB(Clow)< 128
STR = Str Chr(ASCB(Clow))
其他的
i = i + 1
如果我lenb然后STR STR(bin)= CHR(ascw(多重交替焙烘显影工艺(Bin,我,1)克洛))
最后如果
下一个
bin2str = str
端功能

私有函数num2str(num,底座、镜头)
GPS(2005-8-11)
昏暗的RET

当(数字=基础)
RET =(数字mod基)RET
数字=

num2str =右(字符串(镜头,0 )民RET,镜头)
端功能

私有函数str2num(STR,基地)
GPS(2005-8-11)
昏暗的RET
ret = 0
对于i = 1到莱恩(STR)
ret = RET *基地+ Cint(MID(STR,I,1))
下一个
str2num = ret
端功能

私有函数BinVal(仓)
GPS(2002-8-11)
昏暗的RET
ret = 0
我= lenb(bin)1步1
ret = RET * 256 + AscB(多重交替焙烘显影工艺(彬,我,1))
下一个
binVal = ret
端功能

私有函数binval2(仓)
GPS(2002-8-11)
昏暗的RET
ret = 0
我= 1 lenb(仓)
ret = RET * 256 + AscB(多重交替焙烘显影工艺(彬,我,1))
下一个
binval2 = ret
端功能

下面是调用代码。
函数getimagesize(filespec)
GPS(2002-8-11)
昏暗的RET(3)
aso.loadfromfile(filespec)
bflag = aso.read(3)
选择案例六(binVal(bflag))
案例4e5089 :
(15)aso.read
RET(0)=PNG
RET(1)= binval2(aso.read(2))
(2)aso.read
RET(2)= binval2(aso.read(2))
案例464947:
(3)aso.read
RET(0)
RET(1)= BinVal(aso.read(2))
RET(2)= BinVal(aso.read(2))
案例535746:
(5)aso.read
bindata = aso.read(1)
sconv = num2str(ASCB(bindata),2, 8)
带= str2num(左(sconv,5),2)
sconv =中(sconv,6)
而(Len(sconv)<带* 4)
bindata = aso.read(1)
sconv = sconvnum2str(ASCB(bindata),2, 8)

RET(0)=SWF
RET(1)= int(ABS(str2num(MID(sconv,1×带+ 1,带),2)- str2num(MID(sconv,0×带+ 1, 2))))
RET(2)= int(ABS(str2num(MID(sconv,3×带+ 1,带),2)- str2num(MID(sconv,2×带+ 1, 2))))
Case FFD8FF:

做:P1 = binVal(aso.read(1)):当P1 = 255和不aso.eos环
如果P1和P1>191<196然后退出做别的aso.read(binval2(aso.read(2))- 2)
做:P1 = binVal(aso.read(1)):当P1<255,不aso.eos环
而真正的环
阅读(3)
RET(0)= JPG
RET(2)= binval2(aso.read(2))
RET(1)= binval2(aso.read(2))
其他案件:
如果左(bin2str(bflag),2)=BM然后
阅读(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
curfile = server.mappath(request.servervariables(path_info ))
昏暗的curfilename,文件名

图片相对路径(存储在数据库中)
cufilename = RS(imgurl )

/ / / / /因为在同一目录路径 / / / / / showimg.asp和图像,所以我们使用instrrev获取图像
文件名=左(curfile,instrrev(curfile,))cufilename

全球定位系统的建立
昏暗的getpicsize
集getpicsize =新的GPS
设置FS = server.createobject(脚本。FileSystemObject )


昏暗的picsuffixname
picsuffixname = fs.getextensionname(文件名)
模糊图像尺寸
昏暗的pwidth,PHeight
选择案例picsuffixname
案例

的getimagesize函数调用的GPS / / / / / / /通用类 / / /获取图片尺寸
PD = getpicsize.getimagesize(文件名)
pwidth = Pd(1) / /获取图片的宽度
pheight = Pd(2) / /获取图片的高度
案例SWF
PD = getpicsize.getimagesize(文件名)
pwidth = Pd(1) / /闪光的宽度
pheight = Pd(2) / /闪光的高度
其他案件
最后选择
设置FS =无
集getpicsize =没有
%>


上面的代码被复制到OK的顶部!

当然,有人会说,路径不需要使用的path_info,server.mappath直接使用()可以不做,哈哈,萝卜叶,一些主要的功能可以使用path_info FSO和server.mappath实现(无)固定的,所以直接使用。


三.缩略图尺寸的定义

这部分代码是每个人根据他的灯。首先,我们需要指定缩略图的尺寸,例如,300x260,可以这样写:

<
昏暗的pxwidth,PXHeight
暗淡的PP /比例
如果pwidth = 0或pwidth =
pxwidth = 0
pxheight = 0
其他的
PP = formatnumber(pwidth / pheight,2) / /纵横比
最后如果
如果PWidth > = pheight然后
如果PWidth > = 300
pxwidth = 300
pxheight = formatnumber(300 /聚丙烯,0)
其他的
PXWidth=PWidth
pxheight = pheight
最后如果
其他的
如果pheight > = 260
pxheight = 260
pxwidth = formatnumber(260 Pp,0)
其他的
pxwidth = pwidth
pxheight = pheight
最后如果
最后如果
%>


把上面的代码放在第二步写下来:

边框= 0 宽度=
高度= >


可以使用图片格式,也可以写图片的大小。

<
response.write pxwidth Xpxheight
%>


图片的大小可以实现fso.getfilesize(文件名),并点击数可以简单的用一个SQL语句的执行,以及具体的编码就不再介绍了。

通过这种方式,编写了一个生成无组件缩略图的程序。这可能有点教条。然而,只要你能掌握和掌握这个方法,你还有很多改进的地方。