Avatar billede neess Nybegynder
22. september 2005 - 16:01 Der er 18 kommentarer og
1 løsning

Indsæt tekst på billede

Jeg har et billede jeg har generet til thumb.
Jeg vil så gerne lige smide en tekst med på billede. Sådan der f.eks lige står thumb eller en www adresse i bunden af det.
Hvordan kan man lettest genere det ?
Avatar billede jakobdo Ekspert
22. september 2005 - 17:22 #1
Du læser billedet ind med: imagecreatefromjpg()
Hvis det er jpeg.
Så skriver du på billedet med: imagestring()
Og gemmer billedet igen med: imagejpeg()
Avatar billede coderdk Praktikant
22. september 2005 - 19:44 #2
Mit bud: Upload en truetypeskrifttype. Brug imagecreatefromjpeg, brug imagettfbbox til at finde størrelsen, så ved du på baggrund af dette, og størrelsen på billedet, hvor du skal placere teksten, brug så imagettftext til at skrive teksten, og så imagejpeg til at outputte den, enten til skærm eller en fil :)
Avatar billede jakobdo Ekspert
22. september 2005 - 22:05 #3
En lille ting til coderdk sidste forslag!
At lave det til en fil, er smart hvis du har mange visninger.
At sætte teksten på on-the-fly gør du kan skifte løbende, men kræver lidt ekstra cpu.
Avatar billede neess Nybegynder
22. september 2005 - 22:08 #4
Havde også tænkt mig at lave det til en fil. Kan vel lave det i samme snuptag hvor jeg aligvel er igang med at gennere thumben,
Avatar billede jakobdo Ekspert
23. september 2005 - 09:51 #5
Sagtens...
Men brug evt coderdk ide om at tilpasse skriftstørrelse i forhold billedets størrelse.
Avatar billede neess Nybegynder
23. september 2005 - 10:06 #6
Min function til thumb ser sådan ud. Måske i ligger inde med et lille kode eksempel.
function JPG_thumbnail($source_file, $target_file, $targetsize_x=107, $targetsize_y=107, $quality = 75) {

  if (file_exists($target_file)) unlink($target_file);
    $picsize = getimagesize($source_file);
  $source_x  = $picsize[0];
  $source_y  = $picsize[1];
  $targetsize_x=$source_x/1.5;
  $targetsize_y=$source_y/1.5;
  $source_id = imageCreateFromJPEG($source_file);
  $target_id = imagecreatetruecolor($targetsize_x, $targetsize_y);
  $target_pic = imagecopyresampled($target_id, $source_id,
                  0,0,0,0,
                  $targetsize_x, $targetsize_y,
                  $source_x,$source_y);
  imagejpeg($target_id, $target_file, $quality);

}
Avatar billede jakobdo Ekspert
23. september 2005 - 13:40 #7
Uden at tage højde for størrelse på pic, kan du teste:

$target_pic = imagecopyresampled($target_id, $source_id,
                  0,0,0,0,
                  $targetsize_x, $targetsize_y,
                  $source_x,$source_y);
$textcolor = imagecolorallocate($target_pic, 0, 0, 255);
imagestring($target_pic, 5, 0, 0, "NEESS!", $textcolor);
imagejpeg($target_id, $target_file, $quality);
Avatar billede neess Nybegynder
23. september 2005 - 13:47 #8
Hvis man nu så heller vil have det til at så i bunden af billede. Vil du så være.
imagestring($target_pic, 5, 0, $targetsize_y, "NEESS!", $textcolor)
Eller skal man trække højden fra teksten og placere den det lidt højere ?
Avatar billede jakobdo Ekspert
23. september 2005 - 13:49 #9
Hvis du tager $targetsize_y så vil det blive skrevet udenfor billedet.
Prøv at trække højden på skriftypen fra!
(til at starte med kan du jo teste med -10)
Men du skal nok overveje at bruge: imagettftext()
Avatar billede neess Nybegynder
23. september 2005 - 13:53 #10
Hvad er fordelen ved imagettftext ?
Avatar billede jakobdo Ekspert
23. september 2005 - 13:56 #11
Der kan du skrive med skrifttyper du selv vælger.
Du kan dreje dem rundt osv...
Men hvis imagestring er ok til dig, så skal du ikke bruge den anden! :o)
Avatar billede neess Nybegynder
23. september 2005 - 21:54 #12
for denne fejl
Avatar billede neess Nybegynder
23. september 2005 - 21:55 #13
og min funktion ser sådan ud
function JPG_thumbnail($source_file, $target_file, $targetsize_x=107, $targetsize_y=107, $quality = 75) {

  if (file_exists($target_file)) unlink($target_file);
    $picsize = getimagesize($source_file);
  $source_x  = $picsize[0];
  $source_y  = $picsize[1];
  $targetsize_x=$source_x/1.5;
  $targetsize_y=$source_y/1.5;
  $source_id = imageCreateFromJPEG($source_file);
  $target_id = imagecreatetruecolor($targetsize_x, $targetsize_y);
  $target_pic = imagecopyresampled($target_id, $source_id,
                  0,0,0,0,
                  $targetsize_x, $targetsize_y,
                  $source_x,$source_y);
  $textcolor = imagecolorallocate($target_pic, 0, 0, 255);
  $txtpos=$target_pic-10;
  imagestring($txtpos, 5, 0, $txtpos, "www.pornstar-no1.dk", $textcolor);
  imagejpeg($target_id, $target_file, $quality);

}
Avatar billede neess Nybegynder
23. september 2005 - 22:25 #14
fik løst det problem. Er gået igang med  imagettftext() da jeg så kan definere text størrelse. Men hvor downloader man lige fontene ?
Avatar billede coderdk Praktikant
23. september 2005 - 23:25 #15
Du kan bruge fonte fra din c:\windows\fonts folder
Avatar billede neess Nybegynder
23. september 2005 - 23:27 #16
oki doki.
Smid nogle svar gutter. nu spiller det maks.
Avatar billede coderdk Praktikant
23. september 2005 - 23:48 #17
Det må være jacobs :)
Avatar billede jakobdo Ekspert
24. september 2005 - 09:00 #18
Svar!
Avatar billede jakobdo Ekspert
24. september 2005 - 13:01 #19
Takker for point!
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