Avatar billede mik Nybegynder
10. januar 2006 - 15:08 Der er 10 kommentarer

Tilretning af Photoindex

Jeg bruger nedenstående kode til visning af billeder på en intranetserver. Jeg vil høre om der er nogle der kan hjælpe mig med at tilrette dem lidt så den bliver endnu bedre. Det har ikke været muligt at finde en nyere version af koden på nettet, derfor prøver jeg af denne vej. Det skal siges at jeg har prøvet at få hjælp tidligere via Eksperten til netop dette problem.

Det jeg kunne ønske mig tilføjet er følgende:

1. En mulighed for at angive hvormange rækker og kolonner der skal være på en side. Tilføjes i config.inc filen. Det betyder at der selvfølgelig også skal    være frem og tilbage pile.
2. En mulighed for at klikke på en knap der laver et printindex af siden.

Koden er oprindeligt lavet af Elad Rosenberg og jeg tror ikke jeg generer nogle, hvis jeg beder om hjælp til at forbedre den en smule.

Her er et link til hvor nedenstående kode kan downloades:

http://hjem.get2net.dk/abm/myimages.zip

Jeg har ingen ændringer lavet i filerne, så man skal huske at ændre placering m.m. i config.inc filen.

Håber der er nogle der har løst til at hjælpe, jeg er sikker på at andre også vil kunne få gavn af det.

*****
Jeg syntes generelt det er rigtig godt og har brugt det i mange år efterhånden. Den eneste store ulempe er at hvis der er mange billeder i mappen tager det tid at læse alle filerne derfor ønsket om at kunne bestemme antal rækker og kolonner. Og så udskrivning af et "kontaktark".
*****



**Start********************config.inc*******************************Start**

<%
'myImages - Elad Rosenberg March 2001
'-------------------------------------
'asp photo album
'-------------------------------------
'see the readme.txt before using
'-------------------------------------


option explicit
dim ForReading
dim objFSO
dim objNewFile
dim pathToTxt
dim MyString
dim basePath
dim Bvpath
dim howManyPicsInRow
dim widthImage
dim heightImage
dim headFontSize


'---------- configuration (see the readme for more details) --------

basePath = "f:/inetpub/wwwroot/elad/myimages/"
Bvpath = "http://nyx/elad/myimages/images/"

'how many images per row
howManyPicsInRow = 3
'small pictures sizes
widthImage = 100
heightImage = 75
'header font size
headFontSize = 18

'--------------------------------------------------------------------

'read the header file function
function readTextFile(pathToTxt)
    'set file - for reading
    ForReading=1
    set objFSO = server.createobject("scripting.FileSystemobject")
    'open the text file
    set objNewFile = objFSO.OpenTextFile(pathToTxt, ForReading)
    'loop over the file until the end
    do while not objNewFile.AtEndOfStream
    'read line
    MyString = MyString & objNewFile.ReadLine & "<br>"
    loop
    readTextFile = MyString
End function

%>

**Slut********************config.inc*******************************Slut**



**Start********************index.asp*******************************Start**

<!--#include file="config.inc"-->
<style>
BODY
{
    BACKGROUND-COLOR: white;
}
a
{
    color:blue;text-decoration:none;
}

a:hover
{
    color:red;text-decoration:underline;
}

td
{
    font-size:15px;
}
.header
{
    font-size:<%=headFontSize%>px;
}
</style>
<%

'decleration
dim folderName 'Folder Name
dim fso ' File System Object
dim fldr ' folder object
dim objFile
dim lastFolder
dim pathToFile
dim f 'file Object
dim i,o,p 'counters
dim buildFolders
dim imageUrl
dim sf 'sub Folders
dim f1 'files in sub folder
dim vpath ' virtual path
dim result
dim blnImages
dim imgFolderFlag
dim x
'-----------------------------------------



'the folder name from queryString
folderName = request.queryString("folderName")


'security
blnImages = split(folderName,"\")




if folderName <> "" then
    for x = 0 to ubound(blnImages)
        if blnImages(x) = "images" then
            imgFolderFlag = true
            exit for
        end if
    next
    if imgFolderFlag <> true then
        response.write "<center>You are not authorized to view the files</center>"
        response.end
    end if
end if


if folderName="" then
    call getFilesByFolder(basePath,"images")
else
    call getFilesByFolder(folderName,"")
end if



sub getFilesByFolder(Bpath,folderName)
    'file System Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fldr = fso.GetFolder(Bpath & folderName)
    response.write "<table align=center width='80%' border=0><tr>"
    i=0
    'loop over files
    For Each objFile in fldr.Files
        'split to get file name
        objFile = split(objFile,"\")
        lastFolder = ubound(objFile)
       
        'file size
        pathToFile = Bpath & folderName & "\" & objFile(lastFolder)
        Set f = fso.GetFile(pathToFile)
       
        'arrange pictures in a table
       
        if objFile(lastFolder) = "header.txt" then
            response.write "<div align=center>Folder <b>"& objFile(lastFolder-1) & "</b> description:</b><br>" & readTextFile(Bpath & folderName & "\header.txt") & "<br></div>"

        else
        response.write "<td align=center>"
        if objFile(lastFolder)<> "folder.gif" then
            'counter for pictures
            i = i + 1
           
            vpath = split(Bpath,"\")
           
            'converting to virtual path to display image
            for o = 0 to ubound(vpath)
                if vpath(o) = "images" then
                    exit for
                end if
            next
           
            for p = o+1 to ubound(vpath)
                buildFolders = buildFolders & vpath(p) & "/"
            next
            imageUrl = Bvpath & buildFolders
            response.write "<a href='" & imageUrl & objFile(lastFolder) & "'><img src='" & imageUrl & objFile(lastFolder) & "' width="&widthImage & " height="& heightImage & " border=0><br>" & "<a href='" & imageUrl & objFile(lastFolder) & "'>" & objFile(lastFolder)
        if f.name<>"folder.gif" then
            response.write "<b></a>&nbsp;(" & mid(f.size,1,2) & "K" & ")</b>"
        end if
       
        response.write "</td>"
        end if
        end if
        buildFolders = ""
        '3 pictures in <tr>
        result = i mod howManyPicsInRow
        if i > howManyPicsInRow-1 and result=0 then
            response.write "</td></tr>"
        end if
    next
    if i<>"" or i<>0 then
        response.write "</table><center><b>"& i & "</b> files were found<br><br><br></center>"
    else
        response.write "</table><center><b>No files were found<br><br><br><a href='#' onclick=history.go(-1)>back</a></center>"
    end if
    response.write "<table align=center width='80%' border=0><tr><td>"
    response.write "<tr><td><b>Browse Folders:</b></td></tr><tr><td>"
    'sub folders
    Set sf = fldr.SubFolders
      For Each f1 in sf
        response.write"<img src=images/folder.gif>&nbsp;" & "<a href='index.asp?folderName="& f1.path  &"'>" & f1.name & "</a><br>"
      Next
    response.write "<br><a href='#' onclick=history.go(-1)>back</a>"
      response.write "</td></tr></table>"
end sub

%>

**Slut********************index.asp*******************************Slut**
Avatar billede Slettet bruger
10. januar 2006 - 16:15 #1
Hej mik

Jeg synes det er et meget stort script du har ovenfor, som jeg (desværre) ikke rigtigt kan overskue...

Jeg vil umiddelbar foreslå dig at vi begynder helt forfra... Det er ikke så omfattende endda...

Her nedenfor får du lige et FSO-script som kan hente billeder fra en bestemt mappe, og du kan også angive deri hvor mange kollonner der skal være...

<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber1" bgcolor="#000000">
<tr>
<%
cols=10
dim image_directory, Image_Array, count_image, randomfile, directory, allfiles, image
image_directory = "DinMappeMedBilleder"
Set directory=server.createobject("scripting.filesystemobject")
Set allfiles=directory.getfolder(server.mappath(image_directory))
For each image in allfiles.files
Image_Array = image.Name
count=count+1
TRCount=TRCount+1
%>
<td width="<%="" & formatnumber("" & 100/cols & "",0,0) & ""%>%">
<p align="center">
<a href="<%="" & image_directory & "/" & Image_Array & ""%>" target="_blank">
<img src="<%="" & image_directory & "/" & Image_Array & ""%>" border="0" width="100">
</a>
</p>
</td>
<%
if TRCount=cols then
Response.Write "</tr>"
Response.Write "<tr>"
TRCount=0
end if
Next
%>
</tr>
</table>
Avatar billede Slettet bruger
10. januar 2006 - 16:17 #2
- måske... Hvis du absolut vil beholde dit gamle script kan du måske bruge noget her fra det script jeg lige indsatte...

- Om ikke andet er det script du ser lige ovenfor her et ret godt udgangspunkt...

\Dan
Avatar billede mik Nybegynder
10. januar 2006 - 17:07 #3
Hej Dan,

Tak for dit positive svar. Jeg skal lige sige at jeg ikke har prøvet ovenstående endnu. Jeg hæfter mig ved at du skriver:
>>Jeg vil umiddelbar foreslå dig at vi begynder helt forfra... Det er ikke så omfattende endda...<<
Jeg vil meget gerne starte forfra, hvis du ser nogle flere muligheder i det. Men som udgangspunkt skal funktionaliteten vel være som det oprindelige (Familien er blevet helt dus med det efter alle de år)
Avatar billede Slettet bruger
10. januar 2006 - 18:41 #4
Vi kan sagtens lave funktionaliten bedre end ved dit "gamle" script... Men prøv lige at liste op hvad det er for nogle funktioner du er ude efter, hvad skal systemet kunne?

- mulighederne er mange...

\Dan
Avatar billede mik Nybegynder
10. januar 2006 - 20:51 #5
Jamen der gør jeg gerne:

1. Liste filer fra et bibliotek og dets underbiblioteker med en folderoversigt eller
  navigationsmenu i venstre side.
2. Hvert billede skal være forsynet med navn og hvornår billedet er taget
3. Albummet skal selv finde ud af størrelsen på billedet. Jeg har set flere
  løsninger, hvor billeder har den samme størrelse uanset om det er tvær el.
  højformat.
4. Bestemme antal rækker og kolonner
5. Udskrive et kontaktark fra det aktuelle bibliotek med bibliotektets navn som
  overskrift og ellers kun billeder på med filnavn under
6. Frem og tilbage knap, når man har biblioteker med flere sider.
7. Knap til "Diasshow" med alle billeder i mappen. (ønske)

Det var de punkter som jeg syntes et rigtig godt fotoalbum skal indeholde. Med hensyn til "Resize" bruger jeg en Powertoys komponent fra Microsoft "Resize Picture" og det fungerer egentlig godt nok.

Jeg ved ikke om du syntes der mangler noget, men hører da også gerne dine ideer.

/Mik
Avatar billede Slettet bruger
10. januar 2006 - 22:44 #6
OK mik!

Jeg ser på det... Du kan regne med at jeg har et udkast til dig inden i morgen (onsdag)...

- Men lige umiddelbart vil det nok være nemmest at bygge det i to lodrette frames... Hvis dette ikke gør noget...

Men hvad mener du med kontaktark? Er det der du mener miniaturebillederne som man så skal kunne klikke på skal være?

Med venlig hilsen

Dan
Avatar billede Slettet bruger
10. januar 2006 - 23:11 #7
- Lige en sidste ting jeg lige havde glemt at spørge dig om...

Det slideshow, skal det være i Java-script, eller må jeg også få glæden af at lave dette i asp?

- Hvis det skal være i Java-script så kan jeg ikke rigtigt hjælpe dig...

Det vil nok blive lidt "tungere" sådan rent programmeringtmæssigt i asp fremfor Java-script, men til gengæld tror jeg det kan blive mere stabilt på den måde...

\Dan
Avatar billede mik Nybegynder
11. januar 2006 - 00:57 #8
Hej Dan, imorgen onsdag jamen det er jo hurtigt, jeg er ikke hjemme før ved 22 tiden pga møde. I løbet af dagen er jeg on / off.

1. Med kontaktark mener jeg at man kan printe det ud ikke noget med at klikke.
2. Slideshow i ASP helt fint, du har frie hænder....

/Mik
Avatar billede mik Nybegynder
31. januar 2006 - 11:22 #9
Hej Dan, Jeg vil bare  forsigtigt høre om du har fundet ud af noget. mvh Mik
Avatar billede mik Nybegynder
08. februar 2006 - 08:16 #10
Hej Dan, Har du opgivet...... mvh Mik
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