自己整理出來的ASPJpeg和ASPUpload組件的一些屬性和方法

aspUpload
Set Upload = Server.CreateObject("Persits.Upload")
創建對象
方法:
save "path"
保存到指定路徑
如果不指定路徑則保存在內存中
saveas "path"
把內存中的文件保存到指定位置
Upload.CreateDirectory Path, True
建立文件夾
Upload.OpenFile(SavePath)
打開指定路徑文件進行操作
Upload.DeleteFile FilePath
刪除指定文件
-------------------------------------
屬性:
Set File = Upload.Files("FILE1")
創建文件對象
files
獲取表單文件控件元素,可以用for each 遍歷
For Each File in Upload.Files
 Response.Write File.Name & "= " & File.Path & " (" & File.Size &" bytes)<BR>"
Next
file.Filename 獲取上傳文件名
File.Ext 獲取文件擴展名
file.path 獲取上傳保存路徑
file.size 獲取上傳文件大小
File.Delete 刪除已經上傳的文件
File.Copy 複製一個文件到指定路徑
File.ImageType 指定上傳上文件類型默認爲GIF, JPEG, BMP, PNG 未知UNKNOWN
File.ImageWidth 獲取上傳圖片寬
File.ImageHeight獲取上傳圖片高
Upload.Form 獲取表單所有元素
File.MD5Hash 使用MD5加密編碼,唯一值可做
File.Binary 將轉換過的二進制文件寫入數據庫
Upload.CodePage = 65001  支持UTF-8支持中文
SetMaxSize 字節, True
最大能上傳總字節,同時上傳多個時計爲總和
Count = Upload.Save "path"
獲取上傳的文件個數
 
 
一、圖片縮略
<%
Set Jpeg = Server.CreateObject("Persits.Jpeg") 調用組件
Path = Server.MapPath("images") & "/clock.jpg" 待處理圖片路徑
Jpeg.Open Path 打開圖片
高與寬爲原圖片的1/2
Jpeg.Width = Jpeg.OriginalWidth / 2
Jpeg.Height = Jpeg.OriginalHeight / 2
保存圖片
Jpeg.Save Server.MapPath("images") & "/clock_small.jpg"
%>
<IMG SRC="images/clock_small.jpg"> 查看處理的圖片
 
二、圖片水印
<%
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.Open Server.MapPath("images/dodge_viper.jpg")
開始寫文字
Jpeg.Canvas.Font.Color = &000000' red 顏色
Jpeg.Canvas.Font.Family = "Courier New" 字體
Jpeg.Canvas.Font.Bold = True 是否加粗
Jpeg.Canvas.Print 10, 10, "Copyright (c) XYZ, Inc."
打印座標x 打印座標y 需要打印的字符
以下是對圖片進行邊框處理
Jpeg.Canvas.Pen.Color = &H000000' black 顏色
Jpeg.Canvas.Pen.Width = 2 畫筆寬度
Jpeg.Canvas.Brush.Solid = False 是否加粗處理
Jpeg.Canvas.Bar 1, 1, Jpeg.Width, Jpeg.Height
起始X座標 起始Y座標 輸入長度 輸入高度
Jpeg.Save Server.MapPath("images/dodge_viper_framed.jpg") 保存
%>
 
三、安全碼
安全瑪的道理和加水印差不多,很多朋友問我要具體的代碼技術,在這裏我就寫出來和大家分享,一般人我還不告訴他。呵呵。
<%
生成安全碼的函數 www.knowsky.com
function make_randomize(max_len,w_n) max_len 生成長度,w_n:0 可能包含字母,1:只爲數字
randomize
for intcounter=1 to max_len
whatnext=int((1-0+1)*rnd+w_n)
if whatnext=0 then
upper=122
lower=97
else
upper=57
lower=48
end if
strnewpass=strnewpass & chr(int((upper-lower+1)*rnd)+lower)
next
make_randomize=strnewpass
end function
%>
生成安全碼的圖片。當然你要預先準備一張背景圖哦
<%random_num=make_randomize(4,1) 生成4位數字的安全碼
session("random_num")=random_num 爲什麼調用session,沒有session的安全碼是完全沒有意義的。呵呵
Set Jpeg = Server.CreateObject("Persits.Jpeg") 調用組件
Jpeg.Open Server.MapPath("infos/random_pic/random_index.gif") 打開準備的圖片
Jpeg.Canvas.Font.Color = &H006699
Jpeg.Canvas.Font.Family = "Arial Black"
Jpeg.Canvas.Font.Bold = false
Jpeg.Canvas.PrintText 0, -2, random_num
jpeg.save Server.MapPath("infos/random_pic/random_index.bmp") 保存
%> <img src="infos/random_pic/random_index.bmp" border="0" align="absmiddle">
自己做做看。呵呵。
 

四、圖片切割
一直以來,對aspjpeg不瞭解的人以爲是無法用它來進行切割的。
其實有這樣的一個方法的
crop x1,y1,x2,y2
切割長方型左上角x座標,y座標 右下角x座標 y座標
下面我就做一個演示哈
Set Jpeg = Server.CreateObject("Persits.Jpeg")
jpeg.open server.MapPath("/pic/1.gif")
jpeg.width=70
Jpeg.Height = Jpeg.OriginalHeight*70 / jpeg.Originawidth
jpeg.crop 0,0,70,52 開始切割其實是把超過52象素的下部分去掉
jpeg.save server.MapPath("/temp_pic/small_1.gif") 保存
怎麼樣,很簡單吧
 
五、圖片合併
我們這裏是要把logo圖片加到dodge_viper.jpg圖片上去
其實,圖片合併的方法也可以用來動態打水印哦
Set Photo = Server.CreateObject("Persits.Jpeg")
PhotoPath = Server.MapPath("images") & "/dodge_viper.jpg"
Photo.Open PhotoPath
Set Logo = Server.CreateObject("Persits.Jpeg")
LogoPath = Server.MapPath("images") & "/clock.jpg"
Logo.Open LogoPath
Logo.Width = 70
Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth
Photo.DrawImage 0, 0, Logo
Photo.SendBinary 這裏用了sendBinary的輸出方法。當然,你也可以先保存更改後的dodge_viper.jpg,再輸入也可以。我個人不大喜歡用sendBinary方法,在網速慢的時候容易出錯。在速度方面也不怎樣。呵呵。
 
六、數據庫支持
這裏不多說了。其實就是Binary方法,大家知道圖片存進數據庫只能存爲二進制的文件的。所以代碼就懶的寫了。
 
七、更多方法介紹
Canvas.Line(Left, Top, Right, Bottom)
畫一條直線
Canvas.Ellipse(Left, Top, Right, Bottom)
畫出一個橢圓
Canvas.Circle(X, Y, Radius)
畫出一個圓
Canvas.Bar(Left, Top, Right, Bottom)
畫出一個長方形,上面有代碼介紹了
Canvas.Font.ShadowColor
文字陰影顏色
Canvas.Font.ShadowXOffset As Long
陰影X座標設定
Canvas.Font.ShadowYOffset As Long
Y座標設定
Canvas.Font.BkMode As String
文字背景
上次做過圖片水印,效果很差,沒辦法把圖片弄成背景透明的,用背景透明gif會自動填充成白色。用去掉某種顏色的功能,圖片顏色總是不純,出來的效果斑斑點點。今天靈機一動,把這兩個結合起來,用背景透明的gif,並且抽取水印底色,果然成功了!
    ogvbox.Canvas.Pen.Color  = &H000000  ///'// 邊框的顏色
    ogvbox.Canvas.Pen.Width  = 1    ///'// 邊框的粗細
    ogvbox.Canvas.Brush.Solid = False   ///'// 圖片邊框內是否填充顏色
    ogvbox.DrawImage ogvbox.Width-210, ogvbox.Height-74, Logobox  ,0.3,&HFFFFFF    ///'// 加入圖片的位置座標(添加水印圖片),我用圖片大小減去水印大小,把水印加在右下角。參數順序爲:水平座標,垂直座標,水印圖片地址,水銀透明度,抽取顏色(&H表示16進制)
    ogvbox.Canvas.Bar 0, 0, ogvbox.Width, ogvbox.Height ///'// 圖片邊框線的位置座標和大小
    ogvbox.Save Server.MapPath(imagename)  ///'// 生成文件

/'//------Pollener.com AspJpeg組件的預覽和水印生成------開始------
/'創建預覽圖片:call CreateView(原始文件的路徑,預覽文件名及路徑)
Sub CreateView(imagename,tempFilename)
/'定義變量。
Dim PreviewImageFolderName
Dim ogvbox,objFont
Dim Logobox,LogoPath
LogoPath = Server.MapPath("images") & "//shuiyin.gif"  /'//加入圖片所在路徑及文件名(我的是論壇//images//shuiyin.gif)。
Select Case upload_ViewType
Case 0
/'---------------------CreatePreviewImage---------------
set ogvbox = Server.CreateObject("CreatePreviewImage.cGvbox")
ogvbox.SetSavePreviewImagePath=Server.MapPath(tempFilename)   /'預覽圖存放路徑。
ogvbox.SetPreviewImageSize =SetPreviewImageSize      /'預覽圖寬度。
ogvbox.SetImageFile = trim(Server.MapPath(imagename))    /'imagename原始文件的物理路徑。
/'創建預覽圖的文件。
If ogvbox.DoImageProcess=false Then
Response.write "生成預覽圖錯誤:"& ogvbox.GetErrString
End If
Case 1
/'---------------------AspJpegV1.2---------------
Set Logobox = Server.CreateObject("Persits.Jpeg")
/'//建議不要圖片和文字水印同時使用,本代碼爲使用圖片水印。
Logobox.Open LogoPath  /'//讀取添加的圖片。
/'//重新設置圖片的大小。
Logobox.Width = 186  /'//用做水印的圖片的寬度值(像素)。
Logobox.Height = 52  /'//用做水印的圖片的高度值(像素)。
/'//添加水印。
Set ogvbox = Server.CreateObject("Persits.Jpeg")
/'//讀取要處理的原文件。
ogvbox.Open Trim(Server.MapPath(imagename))
If ogvbox.OriginalWidth<Cint(ImageWidth) or ogvbox.Originalheight<Cint(ImageHeight) Then
  F_Viewname=""
  Set ogvbox = Nothing
  Exit Sub
Else
IF ImageMode<>"" and FileExt<>"gif" Then  /'//如果將這行改爲IF ImageMode<>"" Then則可給上傳的GIF圖片也加上水印,但是那些動畫的GIF在加了水印以後就只剩第一楨了,根據你的需求酌情處理吧。
/'//關於修改字體及文字顏色的。
/'//ogvbox.Canvas.Font.Color = &H0000FF  /'//水印文字的顏色,&H後面輸入色彩值。
/'//ogvbox.Canvas.Font.Size = 18  /'//水印文字的大小。
/'//ogvbox.Canvas.Font.Family = "Arial"  /'//水印文字的字體名稱。
/'//ogvbox.Canvas.Font.ShadowColor = &H000000  /'//水印文字的陰影色彩。
/'//ogvbox.Canvas.Font.ShadowXoffset = 1  /'//水印文字陰影向右偏移的像素值,輸入負值則向左偏移。
/'//ogvbox.Canvas.Font.ShadowYoffset = 1  /'//水印文字陰影向下偏移的像素值,輸入負值則向右偏移。
/'//ogvbox.Canvas.Font.Quality = 3  /'//水印文字的清晰度,從0~4,變換不是很大,建議用2或3。
/'//ogvbox.Canvas.Font.Bold = True  /'//水印文字是否爲粗體,True=粗體 False=正常。
/'ogvbox.Canvas.Print 10, 10, ImageMode  /'//水印文字的起始座標(像素)。
ogvbox.Canvas.Pen.Color  = &H000000  /'//增加水印後圖片的邊框色彩。
ogvbox.Canvas.Pen.Width  = 1   /'//增加水印後圖片的邊框寬度。
ogvbox.Canvas.Brush.Solid = False  /'//邊框內是否填充顏色,你可以試試看值爲True時的效果^o^
ogvbox.DrawImage ogvbox.width-186, ogvbox.height-52, Logobox, 0.5  /'//水印圖片的起始座標,我這裏ogvbox.width-186, ogvbox.height-52,表示圖片在右下角,因爲我的圖片寬是186,高是52,所以這樣寫,你可以根據自己的圖片進行調整。0.5是透明度,我這裏是半透明,1表示不透明,你也可以試試看0.7或者0.8的效果。
ogvbox.Canvas.Bar 0, 0, ogvbox.Width, ogvbox.Height  /'//水印可用的範圍。我這裏表示左上角至右下角,即整張圖片的任意爲止都可加水印。
ogvbox.Save Server.MapPath(imagename)  /'//根據以上參數生成增加水印後的圖片文件。
   End If
   ogvbox.Width = ImageWidth
   ogvbox.height = ImageHeight
   /'ogvbox.height = ogvbox.Originalheight*ImageWidth//ogvbox.OriginalWidth
   ogvbox.Sharpen 1, 120
   ogvbox.Save Server.MapPath(tempFilename)  /'//生成增加水印後的圖片的預覽圖片。
  End If
  Set Logobox=Nothing
 
<%
/'函數功能:遠程圖片自動保存到本地服務器,並利用aspjpeg爲圖片加上水印
/'(注意:請先在目錄下創建images目錄,用來保存臨時圖片)
/'程序落伍者:我是星星
/'加入落伍第二份原創程序,HOHO,今天一定要落伍類,5.6日註冊,5.7日落伍,慶祝一下!
/'本程序需要在服務器上安裝"aspjpeg組件"否則無法正常使用
/'也可以只取/'/'/'/'/'22222222/'/'/'/'/'/'/'以上的部分,這部分可以保存圖片,第二部分是進行水印增加
/'使用方法,請保存爲saveimg.asp
/'saveimg.asp?url=UploadFile/2005-6/2005615155335734.gif  即可以取下圖片啦,HOHO. 其他需要加的功能,大家自己擴展好啦
/'如何獲取其他後綴名的文件呢? 當然也可以啦
/'(jpg|gif|png|bmp)改成(mp3)明白吧? 就是取mp3後綴的文件名.以此類推. 嘻嘻
/'俺要落伍. 發了二份原創,一份是驚雲下載系統偷天空時防止出現連接來自天空軟件站的程序,有需要的在落伍裏面搜索我的貼子
/'不要忘了使用時在目錄下建images的保存目錄哦
Server.ScriptTimeOut=99999
const savepath="images" /'圖片保存路徑
url=request("url")
 
function myreplace(str)
newstr=str
set objregEx = new RegExp
objregEx.IgnoreCase = true
objregEx.Global = true
objregEx.Pattern = "http://(.+?)//.(jpg|gif|png|bmp)" /'定義文件後綴
set matches = objregEx.execute(str)
for each match in matches
newstr=replace(newstr,match.value,saveimg(match.value))
next
myreplace=newstr
end function
function saveimg(url)
temp=split(url,".")
/'以下是用時間與隨機數重命名文件名
randomize
ranNum=int(90000*rnd)+10000
filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&temp(ubound(temp))
/'文件名重命名結束
set xmlhttp=server.createobject("Microsoft.XMLHTTP")
xmlhttp.open "get",url,false
xmlhttp.send
img=xmlhttp.ResponseBody
set xmlhttp=nothing
set objAdostream=server.createobject("ADODB.Stream")
objAdostream.Open()
objAdostream.type=1
objAdostream.Write(img)
objAdostream.SaveToFile(server.mappath(savepath&filename))
objAdostream.SetEOS
set objAdostream=nothing
/'/'/'/'/'/'/'222222222/'/'/'/'/'/'/'/'/'/'/'
saveimg=savepath&filename /'獲取保存路徑
Dim Jpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.Open Server.MapPath(saveimg) /'打開保存圖片的路徑
/' 添加文字水印
Jpeg.Canvas.Font.Color = &HFF0000/' 紅色
Jpeg.Canvas.Font.Family = "宋體"
Jpeg.Canvas.Font.Bold = True 
Jpeg.Canvas.Print Jpeg.OriginalWidth-200,Jpeg.OriginalHeight-50, "www.sina.com"  /'水印離左邊的距離,離頂端的距離,這個是放在右下腳了
/'保存文件
Jpeg.Save Server.MapPath(saveimg) /'保存添加水印後的圖片
/' 註銷對象
Set Jpeg = Nothing
end function
%>

Set objImg = Server.CreateObject("Persits.Jpeg")
objImg.Interpolation = 2
///'影像加強 0-2
objImg.open xFilePath
response.write "<:::原始值:::>
AspJpeg版本=" & objImg.Version & "
寬=" & objImg.OriginalWidth & "像素
" & "高=" & objImg.OriginalHeight & "像素
"
response.write "品質=" & objImg.Quality & " (0-100)
" & "路徑=" & objImg.Version & "
"
///'objImg.Width = objImg.OriginalWidth / 2
///'變更圖片寬度(範例爲50%)
///'objImg.Height = objImg.OriginalHeight / 2
///'變更圖片高度(範例爲50%)
///'objImg.Sharpen 2, 250
///'銳利處理
///'objImg.Crop 0,0,150,150
///'切割處理
///'objImg.FlipH
///'左右翻轉
///'objImg.FlipV
///'上下翻轉
///'objImg.RotateL
///'向左旋轉90度
///'objImg.RotateR
///'向右旋轉90度
///' 將圖片秀上文字:------------------------
objImg.Canvas.Font.Color = &HFF0000
///'顏色
objImg.Canvas.Font.Family = "細明體"
///'字型
objImg.Canvas.Font.Bold = True
///'是否使用粗體
objImg.Canvas.Font.BkMode = False
///'是否使用字體背景色
objImg.Canvas.Font.BkColor = &H000000
///'字體背景色
objImg.Canvas.Font.Italic = False
///'是否使用斜體字
objImg.Canvas.Font.Rotation = 0
///'字體旋轉角度
objImg.Canvas.Font.ShadowColor = &H000000
///'字影顏色
objImg.Canvas.Font.ShadowXOffset = 50
///'字影X座標
objImg.Canvas.Font.ShadowYOffset = 150
///'字影Y座標
objImg.Canvas.Font.Size = 14
///'字體大小
objImg.Canvas.Font.Underlined = True
///'是否加底限
objImg.Canvas.Circle 100,100,10
///'畫圓圈
objImg.Canvas.Pen.Color = &H009900
///'畫圓的圓內填滿顏色
objImg.Canvas.Pen.Width = 1
///'畫圓的圓周粗細值
objImg.Canvas.Ellipse 0,0,150,150
///'畫橢圓
objImg.Canvas.Line 0,0,150,150
///'畫線
///'objImg.Canvas.Arc = 100,50,0,200
///'---不清楚這個用法--
objImg.Canvas.Print 100, 100, "I am Odysseus" ,136
///'位置及文字---------------------------------

///' 編輯圖片外框:----------------------------
objImg.Canvas.Pen.Color = &H000000
///'圖片外框顏色
objImg.Canvas.Pen.Width = 1
///'圖片外框寬度(像素)
objImg.Canvas.Brush.Solid = False
///'是否使用區域內填滿
objImg.Canvas.Brush.Color = &HFF0000
///'區域內填滿顏色
objImg.Canvas.Bar 5, 5, objImg.Width, objImg.Height
///'框線產生位置------------------------------
objImg.save xFileCopyToPath
response.write "<:::變化後:::>
寬=" & objImg.Width & "像素
" & "高=" & objImg.Height & "像素
"
Set objImg = Nothing
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章