Avatar billede laksen Nybegynder
21. juni 2004 - 22:04 Der er 23 kommentarer og
1 løsning

Oversigt over billeder (thumbnails)

Flyttet fra http://www.eksperten.dk/spm/512407

Jeg har en oversigt over nogle billeder på en side. Lige nu fungerer det sådan, at oversigtssiden henter originalerne og scalerer dem ned til 50px i højden:

<img src="billeder/001.jpg" height="50" /> <img src="billeder/002.jpg" height="50" /> <img src="billeder/003.jpg" height="50" /> osv. op til f.eks. 25 billeder i alt

Problemet er bare, at det tager meget lang tid at hente originalerne til den lille oversigt, da de jo er meget store (typisk 640X480).

Kan man lave en løsning, så oversigten bliver hurtigere at hente, uden at skulle lave en manuel lille version af hvert billede?

Håber I forstår problemet. Ellers forklarer jeg gerne yderligere...
Avatar billede hansdam Nybegynder
21. juni 2004 - 22:26 #1
Ja det kan du sagtens, hvis du har adgang til det komponent der hedder AspImage...?
Avatar billede tubber Juniormester
21. juni 2004 - 22:26 #2
Følger lige med :)
Avatar billede steen_hansen Forsker
21. juni 2004 - 22:27 #3
Også her
Avatar billede laksen Nybegynder
21. juni 2004 - 22:29 #4
Jeg har AspImage 2.x

Kan du hjælpe mig med at få den til at fungere?
Avatar billede hansdam Nybegynder
21. juni 2004 - 22:48 #5
Ja da, jeg kan da prøve...
Hvis du sætter nogle billeder ind, bliver det for fremtiden over filen "Thumbnail.asp". Det gøres på denne måde:
<img src="Thumbnail.asp?FileName=001.jpg&wsize=89&hsize=140" border="0" />

"wsize" er max bredden på billedet der skal indsættes, og "hsize" er max højden på billedet.
Hvis højden eller bredden er mindre end de indsatte værdier, bliver billedet sat ind i den originale størrelse.
"hsize" og "wsize" er størrelser i px

Sådan ser Thumbnail.asp ud:
-----------------------------------------
<%
'#####################################################################################################'
'                                                                                                      '
'                         Source lavet af Hans T. Dam - (C)Copyright 2004                                  '
'                                    Dato: 21-06-2004                                                  '
'                                  E-mail: admin@hdhp.dk                                              '
'                                                                                                      '
'                                  Send gerne forslag til                                              '
'              forbedringer, optimeringer, mangler og fejl :) Eller anden respons :)                  '
'                                                                                                      '
'            Denne sourcekode må gerne bruges frit, dog ikke commercielt uden aftale.                  '
'                                                                                                      '
'#####################################################################################################'

'Sti fra roden til filen defineres:'
SubFolders = "Billeder\"
RoadToPicture = Request.servervariables("APPL_PHYSICAL_PATH") & SubFolders & Request("FileName")

Set objImg = Server.CreateObject("AspImage.Image")
objImg.LoadImage RoadToPicture
ImageHeight = objImg.MaxY
ImageWidth = objImg.MaxX
Wsize = Cint(request("wsize"))
Hsize = Cint(request("hsize"))

if ImageWidth < Wsize AND ImageHeight < Hsize then
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80
Response.BinaryWrite Image.Image
Set Image = Nothing
Set objImg = Nothing

else

NewHeight = Cint((ImageHeight*Wsize)/ImageWidth)

Set objImg = Nothing
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80
   
    If NewHeight < Hsize then
   
    Image.Resize wsize,NewHeight
   
    else
   
    NewWidth = Cint((Hsize/NewHeight)*Wsize)+Cint(Cint((Hsize/NewHeight)*Wsize)*0.2)
   
    Image.Resize NewWidth,Hsize
   
    end if
   
Response.BinaryWrite Image.Image

Set Image = Nothing
end if
%>
-----------------------------------------
/Hans
Avatar billede laksen Nybegynder
21. juni 2004 - 22:53 #6
Duer scriptet kun på jpg-billeder? Kan man lave det sådan, at det både duer til jpg og gif?
Avatar billede hansdam Nybegynder
21. juni 2004 - 22:59 #7
Har ikke lige forsøgt, men det kan man sikkert godt...
Avatar billede laksen Nybegynder
21. juni 2004 - 23:00 #8
Jeg sidder lige og tester det på mit site. Skriver lige om man kan om lidt....
Avatar billede hansdam Nybegynder
21. juni 2004 - 23:03 #9
Man kan ikke bruge scriptet på gif'er, jeg har testet det. Det jeg ikke havde forsøgt, var om man kunne laver scriptet så det virkede på gif'er...
Avatar billede steen_hansen Forsker
21. juni 2004 - 23:11 #10
Jeg får en fejl:

Overflow

/thumbnail.asp, line 23



Linie 23: NewHeight = Cint((ImageHeight*Wsize)/ImageWidth)
Avatar billede laksen Nybegynder
21. juni 2004 - 23:17 #11
Jeg kan heller ikke rigtig få det til at virke.... Den viser ikke billederne - kun den klassiske "kasse" med et rødt kryds i.

Nogle forslag?
Avatar billede hansdam Nybegynder
21. juni 2004 - 23:31 #12
En typisk fejl er nok at du ikke definere billedets placering rigtigt...

Hvis nu du kører en subfolder på der hedder Billedvisninger\ og inde i Billedvisninger ligger der en mapper der hedder Billeder\ så definere du stien til billederne i Thumbnail sådan:
SubFolders = "Billedvisninger\Billeder\"
RoadToPicture = Request.servervariables("APPL_PHYSICAL_PATH") & SubFolders & Request("FileName")

Den virker altså.. Se eks her: http://hdhp.dk/gr/default.asp?PageID=8
Avatar billede hansdam Nybegynder
21. juni 2004 - 23:32 #13
Hvis du/i prøver at sende mig et link til jeres side, kan de være jeg kan se en fejl (Hvis i har lavet nogen ;) )
Avatar billede steen_hansen Forsker
21. juni 2004 - 23:36 #14
Jeg har ikke rettet i scriptet, udover stiangivelsen:

<%
SubFolders = "images\"
RoadToPicture = Request.servervariables("APPL_PHYSICAL_PATH") & SubFolders & Request("FileName")

Set objImg = Server.CreateObject("AspImage.Image")
objImg.LoadImage RoadToPicture
ImageHeight = objImg.MaxY
ImageWidth = objImg.MaxX
Wsize = Cint(request("wsize"))
Hsize = Cint(request("hsize"))

If ImageWidth < Wsize AND ImageHeight < Hsize Then
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80
Response.BinaryWrite Image.Image
Set Image = Nothing
Set objImg = Nothing

Else

NewHeight = Cint((ImageHeight*Wsize)/ImageWidth)

Set objImg = Nothing
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80
   
    If NewHeight < Hsize then
        Image.Resize wsize,NewHeight
    Else
   
        NewWidth = Cint((Hsize/NewHeight)*Wsize)+Cint(Cint((Hsize/NewHeight)*Wsize)*0.2)
        Image.Resize NewWidth,Hsize
    End If

Response.BinaryWrite Image.Image

Set Image = Nothing
End If
%>
Avatar billede hansdam Nybegynder
21. juni 2004 - 23:37 #15
må jeg se hvordan du sætter billedet ind på siden?
Avatar billede hansdam Nybegynder
21. juni 2004 - 23:40 #16
eller bare din url... :P
Avatar billede laksen Nybegynder
21. juni 2004 - 23:47 #17
Jeg har lavet en test-mappe for at få det til at virke:
http://www.holsthansen.dk/test/

Thumbnail.asp:
<%
'Sti fra roden til filen defineres:'
SubFolders = "billeder\"
RoadToPicture = Request.servervariables("APPL_PHYSICAL_PATH") & SubFolders & Request("FileName")

Set objImg = Server.CreateObject("AspImage.Image")
objImg.LoadImage RoadToPicture
ImageHeight = objImg.MaxY
ImageWidth = objImg.MaxX
Wsize = Cint(request("wsize"))
Hsize = Cint(request("hsize"))

if ImageWidth < Wsize AND ImageHeight < Hsize then
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80
Response.BinaryWrite Image.Image
Set Image = Nothing
Set objImg = Nothing

else

NewHeight = Cint((ImageHeight*Wsize)/ImageWidth)

Set objImg = Nothing
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80
   
    If NewHeight < Hsize then
   
    Image.Resize wsize,NewHeight
   
    else
   
    NewWidth = Cint((Hsize/NewHeight)*Wsize)+Cint(Cint((Hsize/NewHeight)*Wsize)*0.2)
   
    Image.Resize NewWidth,Hsize
   
    end if
   
Response.BinaryWrite Image.Image

Set Image = Nothing
end if
%>

default.asp:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Test af AspImage</title>
</head>
<body>

<img src="Thumbnail.asp?FileName=1.jpg&wsize=89&hsize=140" border="0" />

</body>
</html>

Mappen "billeder" ligger i mappen "test". Den indeholder kun filen "1.jpg".
Avatar billede laksen Nybegynder
22. juni 2004 - 00:15 #18
hansdam> HJÆLP! Hvad er galt :D ?
Avatar billede hansdam Nybegynder
22. juni 2004 - 00:37 #19
Jeg har fundet problemet...
Som jeg troede, er det stigen billedet der er noget galt med...
SubFolders = "billeder\"
RoadToPicture = Request.servervariables("APPL_PHYSICAL_PATH") & SubFolders & Request("FileName")

Roden af dit webhotel finder vi ved den servervariabel APPL_PHYSICAL_PATH
Den kunne fx. se sådan ud: d:\web\holsthansen\wwwroot\

Og så siger du at billederne ligger i mappen "billeder" - men du har overset at det er "test\billeder" fordi den skal have hele stigen, og ikke kun fra derhvor din thumbnail ligger. dvs at den skal se sådan ud: 
SubFolders = "test\billeder\"
RoadToPicture = Request.servervariables("APPL_PHYSICAL_PATH") & SubFolders & Request("FileName")

http://hdhp.dk/test/
Avatar billede laksen Nybegynder
22. juni 2004 - 00:46 #20
Nu har jeg ændret stien til:
SubFolders = "test\billeder\"
men det virker stadig ikke.....:'(
Avatar billede laksen Nybegynder
22. juni 2004 - 00:47 #21
ellers er intet ændret ift. svar af 23:47
Avatar billede hansdam Nybegynder
22. juni 2004 - 01:05 #22
http://hdhp.dk/test/

Jeg har ikke ændre noget fra 21/06-2004 23:47:37
Kan ses her:
http://hdhp.dk/test/ShowSource.asp?Fil=default.asp
http://hdhp.dk/test/ShowSource.asp?Fil=Thumbnail.asp

Det burde altså virke!
Avatar billede laksen Nybegynder
22. juni 2004 - 10:30 #23
Efter en nats søvn virkede det :D Ved ikke hvad jeg har gjort/gjorde galt, men nu spiller det i hvert fald, så tusind tak for din hjælp og tålmodighed!
Avatar billede laksen Nybegynder
22. juni 2004 - 11:00 #24
For god ordens skyld paster jeg lige løsningen, så andre også kan få hjælp af den senere:

AspImage-komponenten skal naturligvis være installeret på serveren!

thumbnail.asp:
<%
'Sti fra roden til filen defineres:'
SubFolders = "test\billeder\"
RoadToPicture = Request.servervariables("APPL_PHYSICAL_PATH") & SubFolders & Request("FileName")

Set objImg = Server.CreateObject("AspImage.Image")
objImg.LoadImage RoadToPicture
ImageHeight = objImg.MaxY
ImageWidth = objImg.MaxX
Wsize = Cint(request("wsize"))
Hsize = Cint(request("hsize"))

if ImageWidth < Wsize AND ImageHeight < Hsize then
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80
Response.BinaryWrite Image.Image
Set Image = Nothing
Set objImg = Nothing

else

NewHeight = Cint((ImageHeight*Wsize)/ImageWidth)

Set objImg = Nothing
Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage RoadToPicture
Image.ImageFormat = 1
Image.JPEGQuality = 80

If NewHeight < Hsize then

Image.Resize wsize,NewHeight

else

NewWidth = Cint((Hsize/NewHeight)*Wsize)+Cint(Cint((Hsize/NewHeight)*Wsize)*0.2)

Image.Resize NewWidth,Hsize

end if

Response.BinaryWrite Image.Image

Set Image = Nothing
end if
%>

default.asp:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Test af AspImage</title>
</head>
<body>

<img src="thumbnail.asp?FileName=1.jpg&wsize=89&hsize=140" border="0" />

</body>
</html>

Disse filer lagde jeg ift. roden i mappen "/test".
Billedet "1.jpg" lagde jeg ift. roden i mappen "/test/billeder".
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