Avatar billede mini-me Nybegynder
22. december 2005 - 21:36 Der er 1 løsning

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
%>
Avatar billede mini-me Nybegynder
15. maj 2006 - 12:10 #1
lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester