服务器不支持动图服务,当服务器不支持图片切割组件我们怎么办?-ASP教程,ASP技巧...

#######################################

本文章属于[雨浪]版权所有,转载必须声明

#######################################

最近做网站图片版块,由于虚拟主机不支持他方组件,无奈。

图片版块的排版成了大问题。经过仔细分析。网上图片一般

为图片集。也就是说一些相关的图片都是差不多大小。

好办了!!!!

图片的长与宽都是有比例的。如果我们从数据库中查找出比例相似的

的图片便很好把排版的问题解决了

图片的长宽可以在上传时通过如下代码取得:

建立类:

class imginfo

dim aso

private sub class_initialize

set aso=createobject("adodb.stream")

aso.mode=3

aso.type=1

aso.open

end sub

private sub class_terminate

err.clear

set aso=nothing

end sub

private function bin2str(bin)

dim i, str

for i=1 to lenb(bin)

clow=midb(bin,i,1)

if ascb(clow)<128 then

str = str & chr(ascb(clow))

else

i=i+1

if i <= lenb(bin) then str = str & chr(ascw(midb(bin,i,1)&clow))

end if

next

bin2str = str

end function

private function num2str(num,base,lens)

dim ret

ret = ""

while(num>=base)

ret = (num mod base) & ret

num = (num – num mod base)/base

wend

num2str = right(string(lens,"0") & num & ret,lens)

end function

private function str2num(str,base)

dim ret

ret = 0

for i=1 to len(str)

ret = ret *base + cint(mid(str,i,1))

next

str2num=ret

end function

private function binval(bin)

dim ret

ret = 0

for i = lenb(bin) to 1 step -1

ret = ret *256 + ascb(midb(bin,i,1))

next

binval=ret

end function

private function binval2(bin)

dim ret

ret = 0

for i = 1 to lenb(bin)

ret = ret *256 + ascb(midb(bin,i,1))

next

binval2=ret

end function

private function getimagesize(filespec)

dim ret(3)

aso.loadfromfile(filespec)

bflag=aso.read(3)

select case hex(binval(bflag))

case "4e5089":

aso.read(15)

ret(0)="png"

ret(1)=binval2(aso.read(2))

aso.read(2)

ret(2)=binval2(aso.read(2))

case "464947":

aso.read(3)

ret(0)="gif"

ret(1)=binval(aso.read(2))

ret(2)=binval(aso.read(2))

case "535746":

aso.read(5)

bindata=aso.read(1)

sconv=num2str(ascb(bindata),2 ,8)

nbits=str2num(left(sconv,5),2)

sconv=mid(sconv,6)

while(len(sconv)

bindata=aso.read(1)

sconv=sconv&num2str(ascb(bindata),2 ,8)

wend

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)

cas??楤?敲???,?e "ffd8ff":

do

do: p1=binval(aso.read(1)): loop while p1=255 and not aso.eos

if p1>191 and p1<196 then exit do else aso.read(binval2(aso.read(2))-2)

do:p1=binval(aso.read(1)):loop while p1<255 and not aso.eos

loop while true

aso.read(3)

ret(0)="jpg"

ret(2)=binval2(aso.read(2))

ret(1)=binval2(aso.read(2))

case else:

if left(bin2str(bflag),2)="bm" then

aso.read(15)

ret(0)="bmp"

ret(1)=binval(aso.read(4))

ret(2)=binval(aso.read(4))

else

ret(0)=""

end if

end select

ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &""""

getimagesize=ret

end function

public function imgw(pic_path)

set fso1 = server.createobject("scripting.filesystemobject")

if (fso1.fileexists(pic_path)) then

set f1 = fso1.getfile(pic_path)

ext=fso1.getextensionname(pic_path)

select case ext

case "gif","bmp","jpg","png":

arr=getimagesize(f1.path)

imgw = arr(1)

end select

set f1=nothing

else

imgw = 0

end if

set fso1=nothing

end function

public function imgh(pic_path)

set fso1 = server.createobject("scripting.filesystemobject")

if (fso1.fileexists(pic_path)) then

set f1 = fso1.getfile(pic_path)

ext=fso1.getextensionname(pic_path)

select case ext

case "gif","bmp","jpg","png":

arr=getimagesize(f1.path)

imgh = arr(2)

end select

set f1=nothing

else

imgh = 0

end if

set fso1=nothing

end function

end class

在上传储存以后实例类

假设图片存入的地址变量为:imgurl

则调用类

set yulang=new imginfo

w = yulang.imgw(server.mappath(imgurl))

h = yulang.imgh(server.mappath(imgurl))

set yulang=nothing

取得比例

flag=formatnumber(w/h,1)

存入数据库,ok了

下面是一个调用相似大小的子程序:

参数说明 (num 调用的个数)(w 载入时的宽度) (flag1 大于比例) (flag2 小于比例)

public sub pictvouchlist(num,w,flag1,flag2)

if num="" or w="" or flag1="" or flag2="" then exit sub

sql="select top "&num&" id,imgurl from myimg where flag>="&flag1&" and flag<="&flag2&""

set rs=conn.execute(sql)

if rs.bof and rs.eof then

response.write("暂无合适的图片")

else

img=rs(1)

…..自己去写吧,呵呵

end sub

好了就写到这里。大家看到了

如果把比例存入数据库

只用一个过程。就可以在页面上随意摆放大小合适的图片了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值