Är du säker på att alla bilder är över 572px höga?
r/ du lägger ju texten på småbilderna nu så då är det klart att det inte funkar, du lär lägga den på dom stora bilderna i sånnafall
12 svar · 540 visningar · startad av paddan
Sitter med aspjpeg kod till mitt fotoalbum.
Scriptet är taget på aspjpeg.com och funkar bara bra att ladda upp bilder och göra en thumbnail bild till den. Men jags kulle vilja ha det så att den även skriver en text på bilden...
Har lagt in denna koden:
Jpeg.Canvas.Font.Color = &HFF0000 ' Red
Jpeg.Canvas.Font.Family = "Verdana"
Jpeg.Canvas.Font.Bold = True
Jpeg.Canvas.Font.Quality = 4 ' Antialiased
Jpeg.Canvas.Font.BkMode = "Opaque" ' to make antialiasing work
Jpeg.Canvas.Print 10, 572, "Copyright (c) Fam sköld."
' Draw frame: black, 2-pixel width
Jpeg.Canvas.Pen.Color = &H000000 ' Black
Jpeg.Canvas.Pen.Width = 2
Jpeg.Canvas.Brush.Solid = False ' or a solid bar would be drawn
Jpeg.Canvas.DrawBar 1, 1, Jpeg.Width, Jpeg.Height
Men det vill inte fungera...!
Har jag lagt den fel eller??
Här är hela koden:
<%
' Create an instance of AspUpload object
Set Upload = Server.CreateObject("Persits.Upload")
' Compute path to save uploaded files to
Path = Server.MapPath("/blog/test/foto/")
' Capture uploaded file. Return the number of files uploaded
Count = Upload.Save(Path)
If Count = 0 Then
Response.Write "No images selected."
Response.End
Else
' Obtain File object representing uploaded file
Set File = Upload.Files(1)
' Is this a valid image file?
If File.ImageType <> "UNKNOWN" Then
' Create instance of AspJpeg object
Set jpeg = Server.CreateObject("Persits.Jpeg")
' Open uploaded file
jpeg.Open( File.Path )
' Draw text
Jpeg.Canvas.Font.Color = &HFF0000 ' Red
Jpeg.Canvas.Font.Family = "Verdana"
Jpeg.Canvas.Font.Bold = True
Jpeg.Canvas.Font.Quality = 4 ' Antialiased
Jpeg.Canvas.Font.BkMode = "Opaque" ' to make antialiasing work
Jpeg.Canvas.Print 10, 572, "Copyright (c) Fam sköld."
' Draw frame: black, 2-pixel width
Jpeg.Canvas.Pen.Color = &H000000 ' Black
Jpeg.Canvas.Pen.Width = 2
Jpeg.Canvas.Brush.Solid = False ' or a solid bar would be drawn
Jpeg.Canvas.DrawBar 1, 1, Jpeg.Width, Jpeg.Height
' Resize image
Jpeg.PreserveAspectRatio = True
'Minska bilden med maxbredd 50px
Jpeg.Width = 70
SavePath = Path & "\small_" & File.ExtractFileName
' AspJpeg always generates thumbnails in JPEG format.
' If the original file was not a JPEG, append .JPG ext.
If UCase(Right(SavePath, 3)) <> "JPG" Then
SavePath = SavePath & ".jpg"
End If
jpeg.Save SavePath
' Save both images in the database along with description.
strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("test.mdb")
Set rs = Server.CreateObject("adodb.recordset")
rs.Open "images", strConnect, 1, 3
rs.AddNew
' Use File.Binary to access binary data of uploaded file.
rs("original_image").Value = File.Binary
Set ThumbFile = Upload.OpenFile(SavePath)
rs("thumbnail").Value = ThumbFile.Binary
rs("description") = Upload.Form("Description")
rs.Update
rs.Close
Set rs = Nothing
Response.Write "Success!"
Else
Response.Write "This is not a valid image."
Response.End
End If
End If
%>
Och en sak till...när jag laddar upp bilden så verkar kvaliteten på bilden försämras...kan man ställa in dte på något vis??
Mvh Martin!
Är du säker på att alla bilder är över 572px höga?
r/ du lägger ju texten på småbilderna nu så då är det klart att det inte funkar, du lär lägga den på dom stora bilderna i sånnafall
oki...men vart ska jag lägga koden..trodde jag la koden rätt...!
såg dte nu att dt är thumbnailen som får den koden..!
får det inte att funka....!
Jag vet inte riktigt vad du vill göra, att lägga bilder i en databas är sällan så lyckat eftersom att databaserna gärna blir brutalt stora..
Om jag va dig så skulle jag bara köra på att när man laddar upp en bild så kör man en resize om man vill ha den i ett mindre format, sedan gör man thumbsen dynamiskt vilket är så mycket enklare.
oki...!jag är med dig..:!
jag hade inte tänkt att köra databas sen...kör det bara nu för att ha lite koll på ad som laddas upp...!
Men jag skulle gärna vilja ha text på den...hur gör man det??
Mvh Martin!
Det jag vill göra är:
Man ska ladda upp bilden, på bilden ska det läggas en text...
Också vill jag att kvaliteten inte ska drabbas...
Hur ser koden ut för det...
Just nu laddas den upp med aspupload och sedan öppnar man jo den just uppladdade bilden igen och lägger till text och resizar den och sparar den som small_filnamn.jpg
Som jag sa innan så sparas den först med aspuplaod och sedan öppnar man den igen för att göra en mindre bild...
Om öppna den igen utan resiza den direkt...hur skriver man då??
<%
function strRandom(antal)
random = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,Y,V,W,Z," & _
"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,y,v,w,z," & _
"1,2,3,4,5,6,7,8,9,0," & _
"_,-"
arrRandomThis = split(random,",")
Randomize Timer
for i = 1 to int(antal)
Randomize Timer
intStart = int(Rnd*((ubound(arrRandomThis)-1)/10)*10) + 1
makeStr = makeStr & arrRandomThis(intStart)
next
strRandom = makeStr
end function
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save server.MapPath(".")
Set Jpeg = Server.CreateObject("Persits.Jpeg")
For Each File in Upload.Files
strNow = strRandom(5)
if round(file.size/1024) > 1024 then
file.delete
response.write "Filen får inte vara större än 1mb"
response.End()
end if
if instr("jpg|gif",lcase(right(File.FileName,3))) = 0 then
file.delete
response.write "Bara jpg eller gif."
response.End()
end if
Jpeg.Open File.Path
img_width = 640
if jpeg.OriginalWidth > img_width or jpeg.OriginalHeight > img_width then
if jpeg.OriginalWidth > jpeg.OriginalHeight then
jpeg.Width = img_width
jpeg.Height = jpeg.OriginalHeight * jpeg.Width / jpeg.OriginalWidth
else
jpeg.Height = img_width
jpeg.Width = jpeg.OriginalWidth * jpeg.Height / jpeg.OriginalHeight
end if
Jpeg.Sharpen 1, 105
end if
filNamn = strNow & "_" & lcase(File.FileName)
strSave = "uppladdat/" & filNamn
jpeg.Canvas.Font.Color = &Hffffff
jpeg.Canvas.Font.Family = "Arial"
jpeg.Canvas.Font.Bold = False
jpeg.Canvas.Font.Size =12
jpeg.Canvas.Print 10,jpeg.Height-20, "© 2005 " & strNamn
Jpeg.Save server.MapPath(strSave)
File.delete
next
%>
Typ nått sånt, men nu sparas inga småbilder utan dom får man göra dynamiskt i fotoalbumet eller vad det nu är man ska ha det till
function strRandom(antal)
random = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,Y,V,W,Z," & _
"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,y,v,w,z," & _
"1,2,3,4,5,6,7,8,9,0," & _
"_,-"arrRandomThis = split(random,",")
Randomize Timer
for i = 1 to int(antal)
Randomize Timer
intStart = int(Rnd*((ubound(arrRandomThis)-1)/10)*10) + 1
makeStr = makeStr & arrRandomThis(intStart)
next
strRandom = makeStr
end function
Vad gör denna koden??
eftersom du antagligen laddar upp alla bilder i samma mapp så genererar den en slumpad slinga för att inte två filnamn ska vara samma
oki..kom på det nu...!
Tack så hemst mycket för all hjälp...det blev precis osm jag vill ha det!
Mvh Martin!