Avatar billede prebenged Nybegynder
26. januar 2003 - 22:14 Der er 10 kommentarer og
1 løsning

Sætte tekst ind under billede

Heysa,

Jeg skal bruge en funktion, der sætter noget tekst ind i et hvidt felt under et billede (Pg.a. copyrigt).
Jeg har en funktion nu, der fungerer således at der under billedet (jpg) bliver lavet en sort baggrund med hvid tekst. Problemet er at jeg ikke kan få byttet om på disse farver, således at den nye "del" af billedet får hvid baggrund. Farven på teksten kan jeg godt ændre. Er der nogen der har en funktion hvor man selv kan bestemme farve?

Tak!
Avatar billede stalle Nybegynder
26. januar 2003 - 22:19 #1
vis noget kode...
Avatar billede prebenged Nybegynder
26. januar 2003 - 22:26 #2
$src = imagecreatefrompng("$userfile_name");
        $im = imagecreatetruecolor($newwidth,$newheight1);
        imagecopyresized($im,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
        if ($rights >0) {
            $text_color = ImageColorAllocate ($im, 255, 255, 255);
            ImageString ($im, 1, 1, $textsize, $text, $text_color);
        }
Avatar billede ksostack Nybegynder
27. januar 2003 - 00:11 #3
Den første farve du allokerer bliver brugt som baggrundsfarve, alle efterfølgende farver der allokeres, kan bruges til tekst, figurer m. m.

//ksostack
Avatar billede ksostack Nybegynder
27. januar 2003 - 00:13 #4
With gd 2.x, the first color allocated with imagecolorallocate() appears to no longer be made the background color. You can use imagefill() to set the background color.

//ksostack
Avatar billede prebenged Nybegynder
27. januar 2003 - 08:38 #5
Heysa.
Jeg kan vel ikke få dig til at uddybe det lidt mere?

Her er hele funktionen:

function createNewImage($userfile_name,$sizes,$newPlace,$newfilename,$rights) {
    $size = GetImageSize($userfile_name);
    $type = $size[2];
    if ($sizes > 0) {
        if ($size[0] >= $size[1]) {
            // Billedet er størst i bredden
            if ($size[0] > $sizes) {
                $factor = $size[0] / $sizes;
                $newheight = round($size[1] / $factor);
                $newwidth = $sizes;
            } else {
                $newheight = $size[1];
                $newwidth = $size[0];
            }
        } else {
            // Billedet er størst i højden
            if ($size[1] > $sizes) {
                $factor = $size[1] / $sizes;
                $newwidth = round($size[0] / $factor);
                $newheight = $sizes;
            } else {
                $newheight = $size[1];
                $newwidth = $size[0];
            }
        }
    } else {
        $newheight = $size[1];
        $newwidth = $size[0];
    }
    $thumbname = "$newPlace/$newfilename";
    if ($rights > 1) {
        $rs = sql("SELECT name FROM images_right WHERE id = '$rights'");
        if ($row = mysql_fetch_array($rs)) {
            extract($row);
            $text = 'FOTO: '.$name;
            $textsize = $newheight;
            $newheight1 = $newheight + 10;
            if ($rights == 3 && $sizes == $size[0]) { $text = 'FOTO: Copyright'; }
        }
    } else {
        $newheight1 = $newheight;
    }
    if ($type == 1) {
        $src = imagecreatefromgif("$userfile_name");
        $im = imagecreatetruecolor($newwidth,$newheight1);
        imagecopyresized($im,$src,0,0,0,0,$newwidth,$newheight,$size[0],$size[1]);
        if ($rights >0) {
            $text_color = ImageColorAllocate ($im, 255, 255, 255);
            ImageString ($im, 1, 1, $textsize, $text, $text_color);
            if (is_file($userfile_name)) { Unlink($userfile_name); }
        }
        Imagegif($im, $thumbname);
    } else if ($type == 2) {
        $src = imageCreateFromJPEG("$userfile_name");
        $im = imagecreatetruecolor($newwidth,$newheight1);
        imageCopyResized($im,$src,0,0,0,0,$newwidth,$newheight,$size[0],$size[1]);
        if ($rights >0) {
            $text_color = ImageColorAllocate ($im, 255, 255, 255);
            ImageString ($im, 1, 1, $textsize, $text, $text_color);
        }
        ImageJPEG($im, $thumbname,100);
    } else if ($type == 3) {
        $src = imagecreatefrompng("$userfile_name");
        imagecopyresized($im,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
        if ($rights >0) {
            $text_color = ImageColorAllocate ($im, 255, 255, 255);
            ImageString ($im, 1, 1, $textsize, $text, $text_color);
        }
        Imagepng($im, $thumbname);
    } else {
        echo "Dette billedformat understøttes ikke";
    }
    chmod($thumbname, 0755);
    imagedestroy($im);
    return $thumbname;
}
Avatar billede sostack Nybegynder
27. januar 2003 - 11:50 #6
hvilken version af GD bruger du?
Avatar billede prebenged Nybegynder
27. januar 2003 - 12:24 #7
gd
GD Support  enabled 
GD Version  bundled (2.0 compatible) 
FreeType Support  enabled 
FreeType Linkage  with freetype 
GIF Read Support  enabled 
JPG Support  enabled 
PNG Support  enabled 
WBMP Support  enabled
Avatar billede fangel Nybegynder
27. januar 2003 - 17:29 #8
du kan løse dette ved at lave en firkant på størrelse med det billede og farve den... det plejer jeg at gøre... skal du se lidt kodepå det?
Avatar billede fangel Nybegynder
27. januar 2003 - 17:31 #9
PS... denne linie burde du ikke kune bruge

Imagegif($im, $thumbname);

da GDLib ikke længere understøtter gif (noget med patent)

Morten
Avatar billede prebenged Nybegynder
27. januar 2003 - 17:50 #10
Heysa.
Ja tak, du må meget gerne give mig koden! Synes jeg har prøvet på det nemlig! :)
Avatar billede fangel Nybegynder
27. januar 2003 - 18:26 #11
kig på dette:

$image = imagecreate(200,200);
$maroon = ImageColorAllocate($image,100,0,0);
$white = ImageColorAllocate($image,255,255,255);
ImageFilledRectangle($image,0,0,200,200,$white);
ImageRectangle($image,10,10,190,190,$maroon);
ImageFilledRectangle($image,50,50,150,150,$maroon);
ImagePNG($image);
ImageDestroy($image);

det laver et pænt lille billede, men du skulle jo bare have EN firkant..., så derfor laver vi en firkant på størrelse med dit billede, og farver det hvidt (eller skulle det være sor, nå, det kan du selv se på)

$white = ImageColorAllocate($image,255,255,255);
ImageFilledRectangle($im,0,0,$newheight,$newwidth,$white);

og så laver du det

imagecopyresized();

så burde det være på hvid baggrund, og du kan, hved at ændre på farven for $white ændre din bg farve... det er mit forslag...

Morten
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