Avatar billede roz Nybegynder
06. november 2006 - 23:00 Der er 16 kommentarer og
1 løsning

Lave copyright logo på billeder

Hey.
Hvordan laver man så der automatisk indsættes et copyright billede nede i højre hjørne på alle billeder der uploades?
Det er set på mange sider hvor billederne ikke må kopieres.
Avatar billede mallus Nybegynder
06. november 2006 - 23:12 #1
Det kan du f.eks. med programmet Snagit: http://www.techsmith.com/download/trials.asp
Avatar billede mallus Nybegynder
06. november 2006 - 23:14 #2
Det kan du f.eks. med programmet Snagit: http://www.techsmith.com/download/trials.asp
Avatar billede coderdk Praktikant
06. november 2006 - 23:14 #3
Det kræver gd-lib. Kig på

  http://dk.php.net/imagecreatefromjpeg
  http://dk.php.net/imagestring
  http://dk.php.net/imagejpeg

og hvis du vil bruge pæne fonte (true type) så kig også på:

  http://dk.php.net/imagettfbbox
  http://dk.php.net/imagettfstring
Avatar billede coderdk Praktikant
06. november 2006 - 23:16 #4
"hvor billederne ikke må kopieres"

Som udgangspunkt må INTET indhold kopieres - Ophavsmanden/-kvinden har copyright på det, selvom det ikke står på billedet. Men ok, det er fint hvis man vil sikre sig lidt (så kan man da se hvis nogen bruger billederne på deres eget site).
Avatar billede coderdk Praktikant
06. november 2006 - 23:16 #5
mallus, Hvad har snagit med php at gøre? ;)
Avatar billede larsholmgaard_dk Nybegynder
07. november 2006 - 07:21 #6
Som jeg skrev i dit første spørgsmål (http://www.eksperten.dk/spm/743154):

Det kan fx. gøres med PHP og GDLib:
http://dk2.php.net/gd

Så kan der lægges et logo oven på billedet, inden det eksporteres til browseren, men originalbilledet ændres ikke. Javascript kan ikke gøre det (så vidt jeg ved).
Avatar billede bgo Nybegynder
07. november 2006 - 17:06 #7
med tilretning kan du måske bruge nedenstående?

<?
header("Content-type: image/png");

$backgroundfile = "boinc_logo_trans.png";
$backgroundsize = getimagesize($backgroundfile);

mysql_connect("127.0.0.1","root","") or die (mysql_error());
mysql_select_db("eseamembers") or die (mysql_error());

$sql = "SELECT flop FROM ministatsteam WHERE projectid=0 ORDER BY dato DESC LIMIT 1";

$status=mysql_query("$sql") or die (mysql_error());
while ($row = mysql_fetch_array($status)){
$flops = number_format($row['flop']/100, 2, '.', ',');
}

mysql_close() or die (mysql_error());
$fontflops = "verdanab.TTF";
$fontsizeflops = 30;
$angleflops = "0";
$intro = "Help us produce more than";
$fontintro = "verdana.TTF";
$fontsizeintro = 10;
$angleintro = "0";
$flopt = "GigaFLOPS";
$fontflopt = "verdanab.TTF";
$fontsizeflopt = 10;
$angleflopt = "0";
$join = "Join our team";
$im_h = 100;
$im_w = 200;

$size=ImageTTFBBox($fontsizeflops,0,$fontflops,$flops);
$tw=abs($size[4]-$size[0]);
$upper=abs($size[5]);
$under=$size[1];
$th=$upper+$under;

$text_x = ($im_w - $tw) / 2;
$text_y = ($im_h - $th) / 2 + $th;

$sizei=ImageTTFBBox($fontsizeintro,0,$fontintro,$intro);
$twi=abs($sizei[4]-$sizei[0]);
$upperi=abs($sizei[5]);
$underi=$sizei[1];
$thi=$upperi+$underi;

$text_xi = ($im_w - $twi) / 2;
$text_yi = 15;

$sizet=ImageTTFBBox($fontsizeflopt,0,$fontflopt,$flopt);
$twt=abs($sizet[4]-$sizet[0]);
$uppert=abs($sizet[5]);
$undert=$sizet[1];
$tht=$uppert+$undert;

$text_xt = ($im_w - $twt) / 2;
$text_yt = 82;

$sizej=ImageTTFBBox($fontsizeintro,0,$fontintro,$join);
$twj=abs($sizej[4]-$sizej[0]);
$upperj=abs($sizej[5]);
$underj=$sizej[1];
$thj=$upperj+$underj;

$text_xj = ($im_w - $twj) / 2;
$text_yj = 95;

if($im_w<=($tw+20))
    $im_w = $tw + 20;


$image  = ImageCreate($im_w,$im_h);
$backblue  = ImageColorAllocate($image,200,200,255);
$black  = ImageColorAllocate($image,0,0,0);
$gray  = ImageColorAllocate($image,204,204,204);
$red    = ImageColorAllocate($image,0,150,0);
$background_rectangle    = ImageColorAllocate($image,255,0,0);
$white  = ImageColorAllocate($image,255,255,255);

//imagesetthickness($image,2);
//imageline($imange,5,5,50,50,$background_rectangle);

$background = imagecreatefrompng("$backgroundfile");

imagecopy($image, $background, ($im_w/2)-($backgroundsize[0]/2), ($im_h/2)-($backgroundsize[1]/2), 0, 0, $backgroundsize[0], $backgroundsize[1]);


//vi leger med noget størrelse


ImageTTFText ($image,$fontsizeintro,$angleintro,$text_xi,$text_yi,$black,"$fontintro","$intro");
ImageTTFText ($image,$fontsizeintro,$angleintro,$text_xj,$text_yj,$black,"$fontintro","$join");
ImageTTFText ($image,$fontsizeflopt,$angleflopt,$text_xt,$text_yt,$black,"$fontflopt","$flopt");

ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x-1,$text_y,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x+1,$text_y,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x-1,$text_y-1,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x+1,$text_y-1,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x-1,$text_y+1,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x+1,$text_y+1,$white,"$fontflops","$flops");

ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x,$text_y,$red,"$fontflops","$flops");


ImagePNG($image);
ImageDestroy($image);
?>
Avatar billede roz Nybegynder
28. november 2006 - 22:44 #8
Hey alle.
har kiget lidt på svarene og har os arbejdet med GDLib siden jeg skrev dette indlæg. Jeg er dog ikke helt med på hvordan man kan lave det som larsholmgaard dk nævner? Altså så der ligges et billede ovenpå inden det eksporteres til browseren?
Stod lidt om det i linket med at man skulle pille lidt ved http-conf men er der nogen der kan forklare mig den korrekte måde?
Avatar billede bgo Nybegynder
30. november 2006 - 12:57 #9
http-conf??? ahh, det kan jeg ikke tro er nødvendigt. Det du gør er, at lave to gange imagecopy. Det første er med original-billedet som skal have logoet på. Næste imagecopy er så logoet. Logoet skulle så gerne blive placeret oven på originalen, og du kan placere det hvor du vil have det:

bool imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )

kunne eks være:

$im_orig = imagecreatefromjpeg("original_billede.jpg");
$imgsize_orig = getimagesize("original_billede.jpg"); //array der indeholder originalbilledets dimensioner

$im_logo = imagecreatefrompng("logo.png"); //hvis der er gennemsigtig baggrund kan .png bruges som vist, eller .gif med imagecreatefromgif()
$imgsize_logo = getimagesize("logo.png"); //array der indeholder logobilledets dimensioner

$im_new = imagecreatetruecolor($imgsize_orig[0], $imgsize_orig[1]); //dette vil gøre resultatbilledet til samme størrelse som originalbilledet

imagecopy($im_new, $im_orig, 0, 0, 0, 0, $imgsize_orig[0], $imgsize_orig[1]); //originalbilledet placeres ved position 0,0 i det nye billede, og det der kopieres fra original billedet er hele billedet (fra position 0,0 til position bredde,højde)

imagecopy($im_new, $im_logo, 5, 120, 0, 0, $imgsize_logo[0], $imgsize_logo[1]); //logobilledet placeres ved position 5,120 i det nye billede, og det der kopieres fra logo billedet er hele billedet (fra position 0,0 til position bredde,højde)

den sidste kunne også tage højde for originalbilledets dimensioner, og eks. placere logo'et 5 pixels fra venstre kant og 20 pixels fra bunden, som eks:

imagecopy($im_new, $im_logo, 5, ($imsize_orig[1]-20), 0, 0, $imgsize_logo[0], $imgsize_logo[1]);

osv. ;) Håber det hjalp dig videre
Avatar billede roz Nybegynder
06. januar 2007 - 11:31 #10
Hejsa i må undskylde den lange svartid men har ikke haft tid til at kigge på det i lang tid. Men nu fik jeg tid :) Har kigget lidt på denne side: http://dk2.php.net/gd og fandt også hurtigt et eksempel.
Men nu mangler jeg lige at høre hvordan jeg så kan gøre billederne utilgængelige via normal http-adresse? Dvs. så man ikke bare kan skrive www.side.dk/images/billede1.jpg men derimod kun kan se billederne de steder hvor jeg vil have det.
Det var her jeg mente jeg skulle bruge noget htaccess eller ligndende.
Avatar billede bgo Nybegynder
06. januar 2007 - 18:26 #11
mener du original-billederne?
Avatar billede roz Nybegynder
06. januar 2007 - 19:22 #12
Ja. Der skal jo kun være gemt original billederne, logoet skal blot laves "on the fly" dvs når billederne vises.
Avatar billede bgo Nybegynder
07. januar 2007 - 04:44 #13
behøver du at gemme originalerne? Du kan jo smide logoet på under upload-proceduren, og gemme dén udgave, og smide originalen væk ;) Sparer også tid for brugeren ;)
Avatar billede roz Nybegynder
07. januar 2007 - 14:00 #14
Vil helst gemme originalerne. Og det var også sådan jeg havde hørt det kunne laves, så logoerne bare blev lagt på real time. Og under alle omstændigheder skal billedemapperne låses så der kun er adgang via hjemmesiden og ikke blot ved at skrive adressen til billedet ind. Så det ville ikke ændre det store.

Kan heller ikke lige se hvordan det skulle spare tid for brugerne ;)
Avatar billede bgo Nybegynder
07. januar 2007 - 17:49 #15
Hver gang der smides logo på billederne skal serveren arbejde lidt ekstra - når det så bliver ganget op med det antal brugere der skal have vist et billede, så får de præsenteret billedet langsommere ;) Derfor er det en god idé kun at bruge real time generering af billeder når det er absolut nødvendigt, som eks. når indholdet ændrer sig ofte.
Avatar billede roz Nybegynder
07. januar 2007 - 18:20 #16
Vil lige snakke med ham jeg udvikler for om hvad han foretrækker og så vende tilbage.

Men tilbage til spørgsmålet: Hvordan kan jeg så fjerne adgangen til billederne? Så de kun kan vises via hjemmesiden.
Avatar billede roz Nybegynder
28. april 2011 - 14:11 #17
Lukker
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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