Avatar billede thomas_b Nybegynder
02. februar 2008 - 23:50 Der 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...:

Image.AddImageTransparent Server.MapPath("logo.bmp"), 1, 1, vbWhite

Jeg kan enten vælge om sætte ind som BMP eller JPG ifølge dokumentiationen...
Avatar billede mitbrugernavn Praktikant
03. februar 2008 - 10:08 #1
jeg sætter de to billeder sammen orginal og vandmærket med domerge, 90 tallet står for opasiteten

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

Image1.LoadImage(server.mappath("../" & orginal_billed))
Image2.LoadImage(server.mappath("images/watermake_2.jpg"))


vand_m = server.mappath("images/watermake_2.jpg")
Image1.DoMerge vand_m, 90

Image1.Filename = server.mappath("../" & orginal_billed)
Image1.saveimage
Avatar billede thomas_b Nybegynder
03. februar 2008 - 19:41 #2
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

Set Image2 = Server.CreateObject("AspImage.Image")
Image2.LoadImage(server.mappath("logo.jpg"))
vand_m = server.mappath("logo.jpg")
Image.DoMerge vand_m, 90

Image.FileName = Server.MapPath(imgsti & filnavnsti1)

Image.SaveImage()

Set Image = nothing
Avatar billede mitbrugernavn Praktikant
03. februar 2008 - 21:27 #3
Set Image = Server.CreateObject("ASPImage.Image")
Set Image2 = Server.CreateObject("AspImage.Image")
Image2.LoadImage(server.mappath("logo.jpg"))
Image.LoadImage Server.MapPath(filnavnsti)
vand_m = server.mappath("logo.jpg")
Image.DoMerge vand_m, 90

Image.FileName = Server.MapPath("large/testen.jpg")

Image.SaveImage()

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
Avatar billede thomas_b Nybegynder
03. februar 2008 - 23:09 #4
Dentager slet ikke fat i Image.DoMerge, der kommer ikke noget logo...
Avatar billede mitbrugernavn Praktikant
04. februar 2008 - 17:59 #5
er du sikker på at stien til dit logo er korrekt ???
Avatar billede thomas_b Nybegynder
04. februar 2008 - 21:32 #6
Jeps... 100% sikker...

Kan du ikke prøve lave et komplet script med de nøjaktige sti'er og filnavne, det kunne være jeg har lavet en lille fejl et sted...
Avatar billede mitbrugernavn Praktikant
05. februar 2008 - 10:44 #7
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
Avatar billede thomas_b Nybegynder
05. februar 2008 - 12:50 #8
Nede i det sidste stykke kode...:

x = Image1.maxX/2 - Image3.maxX/2
y = Image1.maxY/2 - Image3.maxY/2

Hvad kommer det til, er det position for vandmærke ?
Og kan du vise mig et billede hvordan det kommer til og se ud, hvis scriptet løkkes ?
Avatar billede thomas_b Nybegynder
05. februar 2008 - 13:02 #9
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 ???
Avatar billede mitbrugernavn Praktikant
05. februar 2008 - 13:30 #10
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.

Fedt nok at du har fået det til at lykkes.
Avatar billede thomas_b Nybegynder
05. februar 2008 - 15:19 #11
Jeg kan godt nok ikke få det til at virke... logo'et sidder det rigtige sted... men baggrunden bliver stadig hvid hele tiden...!
Avatar billede thomas_b Nybegynder
05. februar 2008 - 15:25 #12
Kan du se nogen fejl i dette ?

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

Set Image3 = Server.CreateObject("AspImage.Image")
Image3.LoadImage(server.mappath("logo.jpg"))
Image3.AddImageTransparent Server.MapPath("logo.jpg"), 1, 1, vbBlack
Image3.CropImage 0, 0, 500, IntNewY

Image3.FileName = Server.MapPath("logo1.jpg")
Image3.SaveImage()
Set Image3 = nothing

Set Image2 = Server.CreateObject("AspImage.Image")
Image2.LoadImage(server.mappath("logo1.jpg"))
vand_m = server.mappath("logo1.jpg")
Image.DoMerge vand_m, 20

Image.FileName = Server.MapPath(imgsti & filnavnsti1)

Image.SaveImage()

Set Image = nothing
Avatar billede mitbrugernavn Praktikant
06. februar 2008 - 07:43 #13
det du gør transparent er det sorte
Image3.AddImageTransparent Server.MapPath("logo.jpg"), 1, 1, vbBlack

prøv
Image3.AddImageTransparent Server.MapPath("logo.jpg"), 1, 1, vbWhite
Avatar billede thomas_b Nybegynder
06. februar 2008 - 21:21 #14
Men jeg har gjordt mit jpg. billede til sort baggrund... så skulle den jo være god nok... ikke ?
Avatar billede mitbrugernavn Praktikant
07. februar 2008 - 09:44 #15
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.
Avatar billede mitbrugernavn Praktikant
07. februar 2008 - 09:51 #16
du kan se vandmærket på www.retromobil.dk/default_1.asp - vælg soltag - kobling - og hold musen over et af billederne
Avatar billede thomas_b Nybegynder
07. februar 2008 - 13:22 #17
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 ?
Avatar billede thomas_b Nybegynder
07. februar 2008 - 13:51 #18
Hvordan ser dit vandmærke-billede ud ?
Avatar billede mitbrugernavn Praktikant
07. februar 2008 - 15:01 #19
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.
Avatar billede thomas_b Nybegynder
07. februar 2008 - 18:49 #20
Hej... har du msn eller lign.? - syntes det er lidt langtrukkent over exp.dk her :) - er ved at have hårdt brug for script... :( desvære...
Avatar billede mitbrugernavn Praktikant
07. februar 2008 - 21:55 #21
smid en mail til mig med dit vandmærke på info//webhusetgrenaa.dk erstat // med @
Avatar billede mitbrugernavn Praktikant
16. februar 2008 - 09:38 #22
kunne du bruge det ???
Avatar billede thomas_b Nybegynder
16. februar 2008 - 17:51 #23
Jeps... det køre derudaf... 1000 tak for hjælpen... :)
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