Avatar billede Slettet bruger
28. juni 2006 - 17:29 Der er 1 kommentar og
1 løsning

Nedsætte Size med AspUpload/AspImage?

Hey eksperter.

Når mine brugere vil uploade et billede må billedet ikke være over 250kb.

Jeg kunne jo bare sætte en MaxSize på fordi jeg bruger AspUploade men det vil jeg helst undgå!

Jeg vil gerne kunne lave billeder mindre via Resize og JPEG-Quality!

MEN HVORDAN ?..
Billedet skal kun være 195px i widht. så jeg har lavet starten:

Set Upload = Server.CreateObject("Persits.Upload")
Count = Upload.SaveVirtual ("/scooterbilleder/")

For Each File in Upload.Files

Set Image = Server.CreateObject("AspImage.Image")
  Image.AutoSize = auto
  Image.LoadImage(server.mappath("../Mappen/" & File.FileName & ""))
  width = Image.MaxX

  If cint(width) > 195 Then
    intXSize = "195"
    intYSize = (intXSize / Image.MaxX) * Image.MaxY

    Image.ResizeR intXSize, intYSize
    Image.FileName = Server.Mappath("../Mappen") & "/" & NewName
    Image.SaveImage

   
    File.delete
   
  else
   
  End If
Next
Set Image = nothing

--------------------------------------------------------

Og her resizer den billedet korrekt men hvis så at billedet stadig er over 250 kb så skal den jo begynde og ændre på JPEG-Quality.

Men hvordan ?

Noget i stil med:

If File.Size > 250kb then

??????
Avatar billede hiks Nybegynder
28. juni 2006 - 20:58 #1
hej

hva med en funktion til check af det med fso? et eksempel

function FileSize(filnavn)
  'ingen tjek om filen eksisterer da den lige er gemt
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.GetFile(filnavn)

  FileSize = f.size

  'ryd op
  set f = nothing
  set fso = nothing

End Function

Set Upload = Server.CreateObject("Persits.Upload")
Count = Upload.SaveVirtual ("/scooterbilleder/")

For Each File in Upload.Files

Set Image = Server.CreateObject("AspImage.Image")
  Image.AutoSize = auto
  Image.LoadImage(server.mappath("../Mappen/" & File.FileName & ""))
  width = Image.MaxX

  If cint(width) > 195 Then
    intXSize = "195"
    intYSize = (intXSize / Image.MaxX) * Image.MaxY

    Image.ResizeR intXSize, intYSize
    Image.FileName = Server.Mappath("../Mappen") & "/" & NewName
    Image.SaveImage

    If FileSize(Image.FileName) > 250000 Then
        'resize på en anden måde
    End if

    File.delete
   
  else
   
  End If
Next
Set Image = nothing

/hiks
Avatar billede hiks Nybegynder
28. juni 2006 - 22:03 #2
hej igen

sad lige og legede lidt og ku se du havde et andet åbent spm også. så har lavet en anden funktion til at gøre billedet gradvis "dårligere" ved hjælp af kvaliteten. Jeg er ikke overbevist om at aspimage virker da jeg ikke har det installeret. Men det ser ud til at virke! :o)

dim tempLevel

function FileSize(filnavn)
  'ingen tjek om filen eksisterer, da den lige er gemt
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.GetFile(filnavn)

  FileSize = f.size

  'ryd op
  set f = nothing
  set fso = nothing

End Function

Function rSizeImage(filnavn, level)
    level = level + 1
    tempLevel = level

    rSizeImage = False
   
    if FileSize(filnavn) > 10000 Then
        Set Image = Server.CreateObject("AspImage.Image")
        Image.LoadImage(filnavn)
        Image.JPEGQuality = templevel
        Image.FileName = filnavn
        Image.SaveImage
        Set Image = Nothing
       
        If level <= 100 Then
            rSizeImage = rSizeImage(filnavn, level)
           
            if rSizeImage = True then Exit Function
        Else
            rSizeImage = False   
        End If
    Else
        rSizeImage = True
    End If
   
End Function

Set Upload = Server.CreateObject("Persits.Upload")
Count = Upload.SaveVirtual ("/scooterbilleder/")

For Each File in Upload.Files

Set Image = Server.CreateObject("AspImage.Image")
  Image.AutoSize = auto
  Image.LoadImage(server.mappath("../Mappen/" & File.FileName & ""))
  width = Image.MaxX

  If cint(width) > 195 Then
    intXSize = "195"
    intYSize = (intXSize / Image.MaxX) * Image.MaxY

    Image.ResizeR intXSize, intYSize
    Image.FileName = Server.Mappath("../Mappen") & "/" & NewName
    Image.SaveImage

    fil = Server.Mappath("../Mappen") & "/" & NewName

    if rSizeImage(fil, 0) = True Then
        response.Write "succes - i forsøg:" & templevel & "<br>"
    else
        response.Write "crap"
    End if

    File.delete
   
  else
   
  End If
Next
Set Image = nothing

/hiks
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