Avatar billede tblaster Nybegynder
11. juli 2003 - 09:01 Der er 28 kommentarer og
1 løsning

AspUpload - rezeise billeder

Hejsa

Er det muligt og hvis hvordan får jeg så alle de billeder der bliver uploadet ændret så de alle har bredden 563? Jeg benytter aspupload med en progress bar. Jeg var inde og fand følgende men kan ikke se hvordan jeg kæder der sammen med min upload script:

<%
' Create an instance of AspJpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")

' Compute path to source image
Path = Server.MapPath("images") & "\test.jpg"

' Open source image
Jpeg.Open Path

' Decrease image size by 50%
Jpeg.Width = Jpeg.OriginalWidth / 2
Jpeg.Height = Jpeg.OriginalHeight / 2

' Optional: apply sharpening
Jpeg.Sharpen 1, 150

' Create thumbnail and save it to disk
Jpeg.Save Server.MapPath("images") & "\test_small.jpg"
%>
Avatar billede keysersoze Ekspert
11. juli 2003 - 09:19 #1
aspupload kan ikke resize billeder - dertil skal du benytte et image-komponent. Et af de klart bedste er aspimage.

Men find ud af hvad din server understøtter - er det aspimage så kig på deres hjemmeside for dokumentation
Avatar billede tblaster Nybegynder
11. juli 2003 - 10:00 #2
Serveren understøtter aspimgage ...
Avatar billede tblaster Nybegynder
11. juli 2003 - 10:02 #3
Sikke en omgang ... jeg var lige inde og se på deres side men blev ikke meget klogere af alt det tekst ... er der en der kan hjælpe mig så skal jeg nok lige smide lidt flere point i!

Her er min upload kode:

Set Upload = Server.CreateObject("Persits.Upload")
    Upload.ProgressID = Request.QueryString("PID")
    Upload.OverwriteFiles = False
Count = Upload.SaveVirtual("/Pics/")

Response.Write "Filen er uploaded. <br><br>" & Upload.TotalBytes & " bytes blev uploadet på " & Upload.TotalSeconds & " sekunder.<br><br>"

For Each File in Upload.Files
%>
Avatar billede keysersoze Ekspert
11. juli 2003 - 10:07 #4
så download deres eksempler; http://www.serverobjects.com/comp/aspimag2.zip - tættere kan du vist ikke komme på komplet kode.
Avatar billede tblaster Nybegynder
11. juli 2003 - 10:23 #5
De hjalp heller ikke en dyt ... med i zip filen følger heller ikke de billeder med som filerne henviser til ... skod
Avatar billede keysersoze Ekspert
11. juli 2003 - 10:48 #6
ja - hvis ikke du kan lave det ud fra producentens egen dokumentation, så har du et problem i hvert fald.
Avatar billede tblaster Nybegynder
11. juli 2003 - 10:56 #7
jeg var lige inde og checke ... det link du gav mig er jo ikke et eksempel ... det er jo selve programmet som man kan installer på sin server for at køre med aspimage ...

Mit problem er ikke at få aspimage til at virke for sig selv ... mit problem er som jeg skrev at jeg skal have den til at køre med aspupload ... så at når man uploader en fil så bliver størrelsen ændret INDEN den bliver uploadet!
Avatar billede keysersoze Ekspert
11. juli 2003 - 11:00 #8
det link jeg gav indeholder også eksempler - det er det asp-filerne er til for. Godt nok er der ikke noget med resize - men det kan du til gengæld finde i deres dokumentation; http://www.serverobjects.com/comp/Aspimage.htm -> "How do I resize and maintain the aspect ratio?" og den kan let sættes sammen med den fil der hedder "modimg.asp" i det du kan downloade
Avatar billede Spotgun Seniormester
11. juli 2003 - 12:15 #9
Du kan ikke få ændret størrelsen på billedet, inden du uploader, da ASPImage og ASPUploade kører serverside. Du bliver derfor nødt til først at få hele billedet uploade, og så resize det til din størrelse, og gemme den igen.
Avatar billede tblaster Nybegynder
11. juli 2003 - 12:52 #10
Har prøvet at tilføje følgende:

Set Image = Server.CreateObject("AspImage.Image")

  Image.AutoSize = auto
  Image.LoadImage("Http://www.domæne.dk/Pics/" & File.FileName)

Sub ResizeX (intXSize)
  Dim intYSize
  intYSize = (intXSize / Image.MaxX = 563) * Image.MaxY
  Image.ResizeR intXSize, intYSize
end sub

  Image.FileName = "Http://www.domæne.dk/Pics/" & File.FileName) & ""

  Image.SaveImage

Set Image = nothing

Men får denne fejl:
Expected end of statement

I denne linje:
Image.FileName = "Http://www.domæne.dk/Pics/" & File.FileName) & ""
Avatar billede keysersoze Ekspert
11. juli 2003 - 12:56 #11
der er en parentes for meget eller for lidt...

Image.FileName = ("Http://www.domæne.dk/Pics/" & File.FileName & "")

men jeg er ikke sikker på at man kan gemme med domæne-henvisning - skal nok være  mere i retning af;

Image.FileName = (server.mappath("../Pics/" & File.FileName & ""))
Avatar billede tblaster Nybegynder
11. juli 2003 - 14:11 #12
Har ændre til:
Image.LoadImage = (server.mappath("../Pics/" & File.FileName & ""))

Men får en fejl:
Object required: "
Avatar billede tblaster Nybegynder
11. juli 2003 - 14:12 #13
I overstående skulle = ikke være med:
Image.LoadImage(server.mappath("../Pics/" & File.FileName & ""))
Avatar billede tblaster Nybegynder
11. juli 2003 - 14:17 #14
Fandt fejlen ... denne skulle være før min kode og ikke efter:

For Each File in Upload.Files

Men nu får jeg denne fejl:
Syntax error
I Sub ResizeX (intXSize)

Hele min sub ser således ud:

Sub ResizeX (intXSize)
  Dim intYSize
  intYSize = (intXSize / Image.MaxX = 563) * Image.MaxY
  Image.ResizeR intXSize, intYSize
end sub
Avatar billede tblaster Nybegynder
11. juli 2003 - 14:27 #15
Så lige at jeg havde defineret den forkerte værdi ... hard ændret til følgende men får stadig samme fejl:

  intXSize = "563"
 
Sub ResizeX (intXSize)
  Dim intYSize
  intYSize = (intXSize / Image.MaxX) * Image.MaxY
  Image.ResizeR intXSize, intYSize
end sub
Avatar billede keysersoze Ekspert
11. juli 2003 - 20:25 #16
det er ikke nødvendigt at lave en sub... hvis du hiver højde, bredde og det ud du skal bruge kan du nøjes med et normalt regnestykke

intYSize = (intXSize / Image.MaxX) * Image.MaxY
Image.ResizeR intXSize, intYSize

fx... Det er ikke andet end matematik - plus, minus og gange. Og alt du behøver er højden og bredden på billedet som du kan læse vha aspimage også
Avatar billede tblaster Nybegynder
12. juli 2003 - 11:57 #17
Det viker nu ... men jeg har lige tilføjet en if og nu ændre den ikke i størrelsen af nogle af billederne ... hvorfor?

  If Image.MaxX > "563" Then
    intXSize = "563"
    intYSize = (intXSize / Image.MaxX) * Image.MaxY
    Image.ResizeR intXSize, intYSize
    Image.FileName = server.mappath("Pics/" & File.FileName & "")
    Image.SaveImage
  End If
Avatar billede keysersoze Ekspert
12. juli 2003 - 12:04 #18
prøv først at se om maxx i det hele taget kommer med et resultat;

width = Image.MaxX
response.write "og bredden er: " & width & "px."
Avatar billede tblaster Nybegynder
12. juli 2003 - 13:06 #19
den skriver
Image.MaxX ud som 0px:

og bredden er: 0px.

Og ikke de 1024 som jeg ved billedet er bred!
Avatar billede keysersoze Ekspert
12. juli 2003 - 13:24 #20
hvilken type billede - gif?
Avatar billede tblaster Nybegynder
15. juli 2003 - 08:25 #21
jpg ... men den skal kunne håndter både gif, jpg og bmp
Avatar billede keysersoze Ekspert
15. juli 2003 - 08:31 #22
kom med lidt mere kode...

jeg ved at gif ikke længere koster - men jeg tror endnu ikke at aspimage kan håndtere det format
Avatar billede tblaster Nybegynder
15. juli 2003 - 08:36 #23
Der er ikke meget mere kode til at ændre i størrelsen men du kan da få hele min upload kode også:

<%

Set Upload = Server.CreateObject("Persits.Upload")
    Upload.ProgressID = Request.QueryString("PID")
    Upload.OverwriteFiles = False
Count = Upload.SaveVirtual("/Pics/")

For Each File in Upload.Files

Set Image = Server.CreateObject("AspImage.Image")

width = Image.MaxX
response.write "og bredden er: " & width & "px."

  Image.AutoSize = auto
  Image.LoadImage(server.mappath("Pics/" & File.FileName & ""))

  If Image.MaxX > "563" Then
    intXSize = "563"
    intYSize = (intXSize / Image.MaxX) * Image.MaxY
    Image.ResizeR intXSize, intYSize
    Image.FileName = server.mappath("Pics/" & File.FileName & "")
    Image.SaveImage
  End If
 
Set Image = nothing

Response.Write "Filen er uploaded. <br><br>" & Upload.TotalBytes & " bytes blev uploadet på " & Upload.TotalSeconds & " sekunder.<br><br>"

%>
Avatar billede keysersoze Ekspert
15. juli 2003 - 09:23 #24
du kan jo heller ikke læse højden på et billede uden at det er læst ind. du skal have loadimage før

width = Image.MaxX
response.write "og bredden er: " & width & "px."
Avatar billede tblaster Nybegynder
15. juli 2003 - 09:30 #25
ups ... der havde jeg sku lige klokket i det ...

Nu skriver den:
og bredden er: 800px.Filen er uploaded.

Og det lader til at den virker ... checker det lige igennem med de forskellige typer billeder og størrelser
Avatar billede tblaster Nybegynder
15. juli 2003 - 09:42 #26
Det var sku noget underlig noget ... nu virker det ikke igen ... men jeg syntes jo som sådan heller ikke at vi har ændre noget så hvorfor skulle det pludselig virke?

Den melder ingen fejl men den ændre ikke i størrelsen på billederne.
Avatar billede keysersoze Ekspert
15. juli 2003 - 09:46 #27
så prøv at udskriv nogle flere variabler undervejs - det er jo den eneste måde at lave fejlsøgning på...

<%

Set Upload = Server.CreateObject("Persits.Upload")
    Upload.ProgressID = Request.QueryString("PID")
    Upload.OverwriteFiles = False
Count = Upload.SaveVirtual("/Pics/")

For Each File in Upload.Files

Set Image = Server.CreateObject("AspImage.Image")
  Image.AutoSize = auto
  Image.LoadImage(server.mappath("Pics/" & File.FileName & ""))
  width = Image.MaxX
  response.write "og bredden er: " & width & "px. <br>"

  If cint(width) > 563 Then
      response.write "så resizer vi"
    intXSize = "563"
    intYSize = (intXSize / Image.MaxX) * Image.MaxY
    response.write intXSize & "<br>"
    response.write intYSize & "<br>"
    Image.ResizeR intXSize, intYSize
    Image.FileName = server.mappath("Pics/" & File.FileName & "")
    Image.SaveImage
  else
    response.write "vi resizer ikke"
  End If
 
Set Image = nothing

Response.Write "Filen er uploaded. <br><br>" & Upload.TotalBytes & " bytes blev uploadet på " & Upload.TotalSeconds & " sekunder.<br><br>"

%>
Avatar billede tblaster Nybegynder
28. juli 2003 - 08:26 #28
Fik det til at virke ... smid et svar for point!

Tak for hjælpen!
Avatar billede keysersoze Ekspert
28. juli 2003 - 09:32 #29
ok - tnx
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