Thumbnail Generator/Thumbnail Galleri
Hejsa,Jeg har lavet et script som automatisk generer thumbnails og viser dem i et galleri.
Koden virker fint, kræver komponenten ASP JPEG fra Persits, som kan downloades på www.persits.com
Jeg søger samtidig at kunne optimere koden lidt, derfor poster jeg det her på eksperten, hvis der skulle være nogle som kunne være behjælpelige.
<script language="javascript">
function showImage(sender){
// open basket window and show product
picWindows = window.open("picturegallery/showImage.asp?Path=" +sender, "ShopWindow", 'toolbar=no,width=800,height=600,alwaysRaised=0,resizable=yes,scrollbars=yes,status=no,titlebar=no')
picWindows.focus()
}
</script>
<table width="100%" height="0" border="0" cellpadding="2" cellspacing="2" align="left">
<%
' MAPPE NAVN - brug evt. database til dynamisk... eller querystring.. .
folder = "dokumenter"
' STI PÅ SERVER, skal tilpasses...
Path1 = Server.MapPath("../../filefolder/" & folder)
DynamicPath = "../../fileFolder/" & Folder
' Start med at kalde funktionen start...
call thumbnailSystemCheck
function thumbnailSystemCheck()
' Rutine erklæring af variabler til file system object.
Dim fso, f, f1, fc, s, f2
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(path1)
Set fc = f.Files
' Tjekker om der i mappen findes en sub-mappe der hedder thumbnails...
if fso.FolderExists(path1 & "/thumbnails/") = true then
' Hvis mappen er fundet, så undersøger vi om der er samme antal JPG billeder i hovedmappe som i thumbnails mappen
' Tom tælle variabel...
fileCount1 = 0
' Variabel til senere brug, den skal bruges til at tælle hvor mange jpg filer der findes i thumbnails mappen
Set f2 = fso.GetFolder(path1 & "/thumbnails/")
' uoptimeret løsning....// Der må kunne findes en bedre løsning, men p.t. ved jeg sku ikke lige hvordan man kan chekke en mappe kun for jpg filer, så mappen løbes igennem og alle filer med
' jpg. som extension bliver talt...
for each fl in fc
path = path1 & "/" & fl.name
if lcase(fso.GetExtensionName(path)) = "jpg" then
fileCount1 = fileCount1 + 1
end if
next
' Mapen thumbials bliver talt.. .
filecount2 = f2.files.count
' Hvis indholdet af hovedmappen og thumbnails mappen er det samme køres vises galleriet
if int(filecount1) = int(filecount2) then
call showGallery
else
' Hvis ikke... tjaa så må vi jo igang med at generer nogle thumbnials, nu hvor mappen er oprettet...
call thumbnailGenerator()
end if
else
' Hvis der ikke blev fundet en mappe så oprettes mappen thumbmails nu her, og thumbnail genereatoren bliver kaldt.
fso.CreateFolder(path1 & "/thumbnails/")
' Lav thumbnails
call thumbnailGenerator
end if
' ryd op og sluk variabler ;)
set fso = nothing
set f = nothing
set f1 = nothing
set s = nothing
' End code...
end function
function thumbnailGenerator()
' diverse variabler...
Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(path1)
Set fc = f.Files
for each fl in fc
' Opret den Thumbnail... man har kun det sjov man selv laver :)
ThumbNailFile = fl.name
path = path1 & "/" & fl.name
' Gemmer thumbnailen i /thumbnails mappen
savePath = path1 & "/thumbnails/" & fl.name
' kompenten som er bruger er Persits JPEG, kan hentes på www.persits.com
Set jpeg = Server.CreateObject("Persits.Jpeg")
if lcase(fso.GetExtensionName(path)) = "jpg" then
' Vi kan kun lave jpg til thumbnails...
Jpeg.Open Path
Jpeg.Width = 70
Jpeg.Height = 64
Jpeg.Save SavePath
end if
next
' ryd op...
set fso = nothing
set f = nothing
set f1 = nothing
set s = nothing
' kald galleri....
call showGallery()
end function
function showGallery()
' Variabler... .bla bla
Dim fso, f, f1, fc, s, f2
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(path1 & "/thumbnails/")
Set fc = f.Files
colPrRow = 0
maxColPrRow = 5
for each fl in fc
' sikre lige at vi kun fÅr vist jpgs... windows laver nogle dumme .db filer..
path = path1 & "/" & fl.name
if lcase(fso.GetExtensionName(path)) = "jpg" then
if colPrRow = 0 then Response.Write "<tr>"
' her skal lige tilpasses lidt...
Response.Write "<td align=left><a href=""#"" onclick=""java script:showImage('"& DynamicPath & "/" & fl.name & "');"")><img src=""" & DynamicPath & "/thumbnails/" & fl.name & """ border=0></a></td>"
colPrRow = colPrRow + 1
if colPrRow = maxColPrRow then
Response.Write "</tr>"
colPrRow = 0
end if
end if
next
if colPrRow > 0 then Response.Write "</tr>"
Response.Write "</table>"
set fso = nothing
set fc = nothing
end function
%>
