02. februar 2008 - 23:50Der er
22 kommentarer og 1 løsning
Vandmærke i billede
hej...
Jeg har et billede og jeg har fået lagt et logo ind som vandmærke... (jeg bruger aspImage)
Problemmet er bare at det bliver ikke skarpt, der er meget kornet omkring logo'et og jeg ville også gerne have logo'et lidt gennemsigtigt... min kode til vandmærket ser sådan ud...:
Nu ser mit script sådan ud, og der kommer ingen logo i billedet..:
imgsti = "large/" Set Image = Server.CreateObject("ASPImage.Image")
Image.LoadImage Server.MapPath(filnavnsti)
Image.ImageFormat = 1 Image.JPEGQuality = 100
IntHeight = Image.MaxY intWidth = Image.MaxX
if intWidth > 500 then '500 er MAX bredde på billedet' intRatio = ((500 * 100) / Image.MaxX) IntNewY = Cint(Image.MaxY * (intRatio / 100)) Image.Resize 500, IntNewY end if
prøv at trække beskæring ud i første omgang - og prøv at give filen et andet navn for at se om den i det hele taget har fat i den. DoMerge kan være tricky - prøv evt. at se i dokumentationen for komponentet http://www.serverobjects.com/comp/Aspimage.htm
her er det script jeg bruger - script og billed og vandmærke ligger i samme mappe som denne fil.
billed_navn = "12345.jpg" Set Image1 = Server.CreateObject("AspImage.Image") Image1.LoadImage(server.mappath(billed_navn)) 'her ligger billedet i samme mappe som denne fil 'her retter jeg størrelsen på billedet Image1.AutoSize = false ImageHeight = Image1.MaxY ImageWidth = Image1.MaxX ''Udregn ny størrelse ud fra ønsket sættes under fixedWidth if ImageWidth > 300 then fixedWidth = 300 NewHeight = Cint((ImageHeight*fixedWidth)/ImageWidth) NewWidth = fixedWidth else NewHeight = ImageHeight NewWidth = ImageWidth end if Image1.JPEGQuality = 60 Image1.resize NewWidth, NewHeight Image1.FileName = server.mappath(billed_navn) Image1.SaveImage Set Image1 = nothing
Set Image1 = Server.CreateObject("AspImage.Image") 'her hentes det billed der lige er blevet beskåret Set Image2 = Server.CreateObject("AspImage.Image") 'her hentes vandmærket Set Image3 = Server.CreateObject("AspImage.Image")
Image1.LoadImage(server.mappath(billed_navn)) Image2.LoadImage(server.mappath("watermake_2.jpg")) 'hentes i samme mappe som denne fil
'her laver jeg en beskæring af vandmærket i forhold til det billed det skal sættes på og gemmer det som watermake_3 org_height = Image1.maxY org_width = Image1.maxX b_top = (Image2.maxY - org_height) /2 Image2.CropImage 0, b_top, org_width, org_height Image2.ImageFormat = 1 Image2.Filename = server.mappath("watermake_3.jpg") Image2.saveimage ' slut
'her henter jeg så det nye vandmærke og kalder det vand_m og sætter det sammen med Image1 Image3.LoadImage(server.mappath("watermake_3.jpg")) x = Image1.maxX/2 - Image3.maxX/2 y = Image1.maxY/2 - Image3.maxY/2 vand_m = server.mappath("watermake_3.jpg") Image1.DoMerge vand_m, 90
Image1.Filename = server.mappath(billed_navn) 'her gemmer jeg så det nye Image1.saveimage
'her sletter jeg det vandmærke jeg havde oprettet til det billed Set fso = Server.CreateObject("Scripting.FilesystemObject") set slet = fso.getfile(server.mappath("watermake_3.jpg"))
if fso.FileExists(slet) then slet.delete end if Set slet= Nothing Set fso = Nothing 'slut
Du kan jeg fortælle at jeg har vandmærke på men...
1. det fylder hele billedet ud..! - hvordan laver jeg position på billedet? 2. billedet er ikke gennemsigtigt pga. jpg...! - Kan man kun bruge jpg med DoMerge ???
mit vandmærke er et jpg og original str. har samme størrelse som det mine billeder skal have i størrelse her 300x300. jeg har lavet mit vandmærke (tekst) med gradient farve fra hvid til grå og hvid baggrund (det hvide gøres jo transparent i aspimage processen) - disse 2 linier x = Image1.maxX/2 - Image3.maxX/2 y = Image1.maxY/2 - Image3.maxY/2 er lidt overflødige.
vandmærket trækkes ud så det fylder hele dit org. billed - derfor er det vigtigt at du har størrelsen på det billed - så kan du beskære dit vandmærke i forhold til dette og derefter sætte dem sammen.
imgsti = "large/" Set Image = Server.CreateObject("ASPImage.Image")
Image.LoadImage Server.MapPath(filnavnsti)
Image.ImageFormat = 1 Image.JPEGQuality = 100
IntHeight = Image.MaxY intWidth = Image.MaxX
if intWidth > 500 then '500 er MAX bredde på billedet' intRatio = ((500 * 100) / Image.MaxX) IntNewY = Cint(Image.MaxY * (intRatio / 100)) Image.Resize 500, IntNewY end if
jeg forstår ikke helt hvad du mener - hvis du har sort baggrund på vandmærket og du laver det 80 transparent så vil hele dit billed blive mørkere, prøv at lave det med hvid baggrund i stedet.
Jeg har lavet sort baggrund så "Image3.AddImageTransparent Server.MapPath("logo.jpg"), 1, 1, vbBlack" kunne gøre den gennemsigtig, så burde den da ikke komme igen når jeg har gjordt den gennemsigtig vel ?
mit vandmærke er hvid bund og grå/hvid tonet tekst.
og nej det lyder mærkeligt - jeg har været ude for at nogle gange tager den ikke det nye billed men henter fra casen på maskinen - er det det der driller dig ? det er derfor at jeg sætter det til at slette logo1.jpg når det er blevet brugt.
Jeps... det køre derudaf... 1000 tak for hjælpen... :)
Synes godt om
Ny brugerNybegynder
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.