Jag vill kunna ladda upp bilder som automatiskt ställs om till en en given storlek på höjd och bredd samt förminskar byte storleken!
Mitt webhotell säger sig ha aspupload installerat...kan man med denna komponent göra så som jag önskar och hur gör man isåfall! hade vart grymt om detta kunde lösas!
J.N.Medlem sedan apr. 20031 660 inlägg HEJ!
Har de ingen manual, eller ens hänvisar till tillverkarens webbplats?
http://www.aspupload.com/manual_image.html
De måste ha AspJpeg, eller liknande, för det.
1337 (inlägg) som jag efter lång tid förstått varför det är coolt!
http://en.wikipedia.org/wiki/Leet
@ndersMedlem sedan juni 200032 969 inlägg Du kan inte skala om bilder med ASPUpload, utan du måste använda en komponent avsedd för det ändamålet, ex. ASPJpeg.
J.N.Medlem sedan apr. 20031 660 inlägg Det var jag också säker på, men när jag letade upp manualen stod det att man kunde det!
Ser nu att jag missade en viktig passus "AspUpload can be used in conjunction with ... AspJpeg ...". :r
Tjena
Här har du lite exempel kod på hur du kan använda ASP Upload för uppladdning och AspJpeg för att ändra storlek samt skapa miniatyr:
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save(Server.MapPath("uploaded"))
Set File = Upload.Files("NAMNET_PÅ_INPUT_FILE")
If Not File Is Nothing Then
' Är det en bild?
If File.ImageType = "UNKNOWN" Then
File.Delete
Response.Write("Filen du försöker ladda upp är ingen bild...")
Response.End
End If
' Skapa AspJpeg Objekten
Set JpegPic = Server.CreateObject("Persits.Jpeg")
Set JpegTmb = Server.CreateObject("Persits.Jpeg")
' Välj ett filnamn (File.Name är 'originalnamnet') och spara filen
FilNamn = "Min_Fil" & File.Ext
File.Move Server.MapPath("KATALOG") & "\" & FilNamn
' Öppna den uppladdade bilden för att skala om den:
JpegPic.Open Server.MapPath("..\pics\shop\pics") & "\" & FilNamn
' Om storleken ä'r större än 547px, skala ner den till 547px, behåll proportionerna.
If JpegPic.Width > 547 Then
mWidth = 547
JpegPic.PreserveAspectRatio = True
JpegPic.Width = mWidth
End If
' Spara bilden
JpegPic.Save Server.MapPath("KATALOG\pics") & "\" & FilNamn
tWidth = JpegPic.Width
tHeight = JpegPic.Height
' Öppna bilden en gång till för att skapa miniatyr:
JpegTmb.Open Server.MapPath("..\pics\shop\pics") & "\" & FilNamn
mHeight = 85
JpegTmb.PreserveAspectRatio = True
JpegTmb.Height = mHeight
Skala ner bilden och beskär om bredden är mer än 110px.
If JpegTmb.Width > 110 Then
JpegTmb.Crop 0, 0, 110, 85
End If
' Spara miniatyr
JpegTmb.Save Server.MapPath("..\pics\shop\thumbs") & "\" & FilNamn
' Stäng objekten
Set JpegPic = Nothing
Set JpegTmb = Nothing
End If
Set Upload = Nothing
Jag använder AspUpload / AspJpeg väldigt mycket. Det är två mycket bra komponenter att jobba med, lätt att lära sig, dessutom har dom fenomenala hjälpsidor, som nämnda tidigare, http://www.aspupload.com resp. http://www.aspjpeg.com
Lycka till!
Kanon...skall prova denna lite senare idag! Stort tack så länge...jag återkommer om detta fungerar och då avslutar denna sträng!
När jag använder denna kod får jag följande felmedelande.
Server object error 'ASP 0177 : 800401f3'
Server.CreateObject Failed
/laddaupp.asp, line 33
Invalid ProgID. For additional information specific to this message please visit the Microsoft Online Support site located at: http://www.microsoft.com/contentredirect.asp.
Bilden kommer upp till servern men sedan får jag detta felmedd!
<HTML>
<BODY BGCOLOR="#FFFFFF">
<h3>Ladda upp foto</h3>
<FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="laddaupp.asp?spara=foto">
<TABLE CELLPADDING="3" CELLSPACING="0" BORDER="0" BGCOLOR="#EEEEEE">
<TR><TD>Image:</TD><TD><INPUT TYPE=FILE NAME="file1" size="20"></TD></TR>
</TD></TR>
<TR><TD COLSPAN="2"><INPUT TYPE="SUBMIT" VALUE="Upload"></TD></TR>
</TABLE>
</FORM>
</BODY>
</HTML>
<% If Request.Querystring("spara") = "foto" Then %>
<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save(Server.MapPath("\uploadbilder\"))
Set File = Upload.Files("file1")
If Not File Is Nothing Then
' Är det en bild?
If File.ImageType = "UNKNOWN" Then
File.Delete
Response.Write("Filen du försöker ladda upp är ingen bild...")
Response.End
End If
' Skapa AspJpeg Objekten
Set JpegPic = Server.CreateObject("Persits.Jpeg")
Set JpegTmb = Server.CreateObject("Persits.Jpeg")
' Välj ett filnamn (File.Name är 'originalnamnet') och spara filen
FilNamn = "Min_Fil" & File.Ext
File.Move Server.MapPath("\uploadbilder") & "\" & FilNamn
' Öppna den uppladdade bilden för att skala om den:
JpegPic.Open Server.MapPath("\uploadbilder\pics") & "\" & FilNamn
' Om storleken ä'r större än 547px, skala ner den till 547px, behåll proportionerna.
If JpegPic.Width > 450 Then
mWidth = 450
JpegPic.PreserveAspectRatio = True
JpegPic.Width = mWidth
End If
' Spara bilden
JpegPic.Save Server.MapPath("\uploadbilder\pics") & "\" & FilNamn
tWidth = JpegPic.Width
tHeight = JpegPic.Height
' Öppna bilden en gång till för att skapa miniatyr:
JpegTmb.Open Server.MapPath("\uploadbilder\pics") & "\" & FilNamn
mHeight = 85
JpegTmb.PreserveAspectRatio = True
JpegTmb.Height = mHeight
'Skala ner bilden och beskär om bredden är mer än 110px.
If JpegTmb.Width > 110 Then
JpegTmb.Crop 0, 0, 110, 85
End If
' Spara miniatyr
JpegTmb.Save Server.MapPath("\uploadbilder\pics\thumbs") & "\" & FilNamn
' Stäng objekten
Set JpegPic = Nothing
Set JpegTmb = Nothing
End If
Set Upload = Nothing
%>
<% End if %>
Hmm, ok.
Rad 33 i ditt script, vilken av dessa är det?
Set Upload = Server.CreateObject("Persits.Upload")
Set JpegPic = Server.CreateObject("Persits.Jpeg")
Set JpegTmb = Server.CreateObject("Persits.Jpeg")
Känns som om servern inte har AspJpeg installerat.
Vad händer om du strunar i Jpeg-delen och BARA använder dig av själva uploadkomponenten?
Att bilden laddasupp tyder just på detta, uploaden kan köras men när bilden är klar och du skapar den första Jpegkomponenten, så blir det fel.
Kolla med ditt webhotell, men jag misstänker att så är fallet.
När kah använder detta, så blir vissa bilder delvis gråa. Om man laddar upp en bild på tex 600x332 så skall den minskas till 400pix med ratio på höjd. De funkar jätte bra! Men laddar man en bild på 418x452 så skall den minskas till 400 med ratio på höjd. Då blir ca 2/3 delar grå av del bilden. Har provat massa saker men u blir jag galen och hoppas på hjälp!!!!
<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.OverwriteFiles = False
Upload.SetMaxSize 100000, False
Upload.Save(Server.MapPath("/uploadbilder/"))
Set File = Upload.Files("file")
If Not File Is Nothing Then
' Är det en bild?
If File.ImageType = "UNKNOWN" Then
File.Delete
Response.Write("Filen du försöker ladda upp är ingen bild...")
Response.End
End If
' Skapa AspJpeg Objekten
Set JpegPic = Server.CreateObject("Persits.Jpeg")
Set JpegTmb = Server.CreateObject("Persits.Jpeg")
' Välj ett filnamn (File.Name är 'originalnamnet') och spara filen
FilNamn = Upload.Files("file").ExtractFileName
File.Move Server.MapPath("uploadbilder") & "/" & FilNamn
' Öppna den uppladdade bilden för att skala om den:
JpegPic.Open Server.MapPath("uploadbilder") & "/" & FilNamn
' Om storleken ä'r större än 400px, skala ner den till 400px, behåll portionerna.
If JpegPic.Width > 400 Then
mWidth = 400
JpegPic.PreserveAspectRatio = True
JpegPic.Width = mWidth
End If
' Spara bilden
JpegPic.Save Server.MapPath("/uploadbilder") & "/" & FilNamn
tWidth = JpegPic.Width
tHeight = JpegPic.Height
' Öppna bilden en gång till för att skapa miniatyr:
JpegTmb.Open Server.MapPath("/uploadbilder/") & "/" & FilNamn
mHeight = 85
JpegTmb.PreserveAspectRatio = True
JpegTmb.Height = mHeight
'Skala ner bilden och beskär om bredden är mer än 110px.
If JpegTmb.Width > 110 Then
JpegTmb.Crop 0, 0, 110, 85
End If
' Spara miniatyr
JpegTmb.Save Server.MapPath("/uploadbilder/pics") & "/" & FilNamn
' Stäng objekten
Set JpegPic = Nothing
Set JpegTmb = Nothing
End If
Set Upload = Nothing
end if
%>
"Har provat massa saker, men ingenting fungerar..."
Vad exakt har du provat för saker.
Det är bra att du talar om vad du gjort, så är det lättare att komma med ett vettigt svar.
Ditt problem kan bero på att bredd resp. höjd ligger för nära varandra, samt att bilden i ditt exempel är stående och inte liggande, som den andra.
Testa att göra en check:
If JpegPic.Width > JpegPic.Height Then
'Liggande bild.
If JpegPic.Width > 400 Then
mWidth = 400
JpegPic.PreserveAspectRatio = True
JpegPic.Width = mWidth
End If
Else
'Stående bild
If JpegPic.Height > 470 Then
mHeight = 400
JpegPic.PreserveAspectRatio = True
JpegPic.Height = mHeight
End If
End If
Har inte haft samma problem själv, så vet inte exakt varför du får en "grå" bild.
Bifoga gärna originalbild och den bild som skapas, så jag kan se exakt vad som händer.
bwcMikkeMedlem sedan okt. 2004159 inlägg En annan utväg är att använda ASP.NET om du kan något om det. Där finns färdiga funktioner för det du vill.
hur använder jag det då? finns det bra guider/hemsidor med kod exempel!?!
emissionMedlem sedan dec. 19996 721 inlägg Nej, att gå över till ASP.NET är en gigantisk omväg!
Som sagt, vad exakt har du provat för saker?