Avatar billede dennism Nybegynder
30. juni 2003 - 18:09 Der er 17 kommentarer og
1 løsning

PHP: ændring af billed

På flere sites her på nettet, har man mulighed for at oploade et billed af sig selv, og på nogle af siderne laver deres system automatisk sådan sitets navn står i nederste hjørne af billedet. Hvordan laver man dette?

Nogle brugere oploader et meget stort billed. Er det så også muligt at systemet kan lave en mindre preview at profilbilledet (så kan jeg evt. lave sådan at når man trykker på billedet, så kommer det originale billed fra)?
Avatar billede googolplex Novice
30. juni 2003 - 18:49 #1
Ja, du skal bare lave et resize at det originale billede og så vise den nye thumbnail med et link til originalen. Her er en klasse der kan bruges, du kan se den i funktion her:

http://kentung.f2o.org/scripts/thumbnail/sample.php

Og klassen :)

<?
##############################################
# Shiege Iseng Resize Class
# 11 March 2003
# shiegege@yahoo.com
# http://kentung.f2o.org/scripts/thumbnail/
################
# Thanks to :
# Dian Suryandari <dianhau@yahoo.com>
/*############################################
Sample :
$thumb=new thumbnail("./shiegege.jpg");    // generate image_file, set filename to resize
$thumb->size_width(100);                // set width for thumbnail, or
$thumb->size_height(300);                // set height for thumbnail, or
$thumb->size_auto(200);                    // set the biggest width or height for thumbnail
$thumb->jpeg_quality(75);                // [OPTIONAL] set quality for jpeg only (0 - 100) (worst - best), default = 75
$thumb->show();                            // show your thumbnail
$thumb->save("./huhu.jpg");                // save your thumbnail to file
----------------------------------------------
Note :
- GD must Enabled
- Autodetect file extension (.jpg/jpeg, .png, .gif, .wbmp)
  but some server can't generate .gif / .wbmp file types
- If your GD does not support 'ImageCreateTrueColor' function,
  change one line from 'ImageCreateTrueColor' to 'ImageCreate'
  (the position in 'show' and 'save' function)
*/############################################


class thumbnail
{
    var $img;

    function thumbnail($imgfile)
    {
        //detect image format
        $this->img["format"] = ereg_replace(".*\.(.*)$","\\1",$imgfile);
        $this->img["format"] = strtoupper($this->img["format"]);
        if ($this->img["format"] == "JPG" || $this->img["format"]=="JPEG") {
            //JPEG
            $this->img["format"] = "JPEG";
            $this->img["src"] = ImageCreateFromJPEG ($imgfile);
        } elseif ($this->img["format"] == "PNG") {
            //PNG
            $this->img["format"] = "PNG";
            $this->img["src"] = ImageCreateFromPNG ($imgfile);
        } elseif ($this->img["format"] == "GIF") {
            //GIF
            $this->img["format"] = "GIF";
            $this->img["src"] = ImageCreateFromGIF ($imgfile);
        } elseif ($this->img["format"] == "WBMP") {
            //WBMP
            $this->img["format"] = "WBMP";
            $this->img["src"] = ImageCreateFromWBMP ($imgfile);
        } else {
            //DEFAULT
            echo "Not Supported File";
            exit();
        }
        @$this->img["lebar"] = imagesx($this->img["src"]);
        @$this->img["tinggi"] = imagesy($this->img["src"]);
        //default quality jpeg
        $this->img["quality"] = 75;
    }

    function size_height($size = 100)
    {
        //height
        $this->img["tinggi_thumb"] = $size;
        @$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
    }

    function size_width($size = 100)
    {
        //width
        $this->img["lebar_thumb"] = $size;
        @$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
    }

    function size_auto($size = 100)
    {
        //size
        if ($this->img["lebar"]> = $this->img["tinggi"]) {
            $this->img["lebar_thumb"] = $size;
            @$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
        } else {
            $this->img["tinggi_thumb"] = $size;
            @$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
        }
    }

    function jpeg_quality($quality = 75)
    {
        //jpeg quality
        $this->img["quality"] = $quality;
    }

    function show()
    {
        //show thumb
        @Header("Content-Type: image/".$this->img["format"]);

        /* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
        $this->img["des"] = ImageCreateTrueColor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
            @imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

        if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
            //JPEG
            imageJPEG($this->img["des"],"",$this->img["quality"]);
        } elseif ($this->img["format"] == "PNG") {
            //PNG
            imagePNG($this->img["des"]);
        } elseif ($this->img["format"] == "GIF") {
            //GIF
            imageGIF($this->img["des"]);
        } elseif ($this->img["format"] == "WBMP") {
            //WBMP
            imageWBMP($this->img["des"]);
        }
    }

    function save($save = "")
    {
        //save thumb
        if (empty($save)) $save=strtolower("./thumb.".$this->img["format"]);
        /* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
        $this->img["des"] = ImageCreateTrueColor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
            @imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);

        if ($this->img["format"]=="JPG" || $this->img["format"] == "JPEG") {
            //JPEG
            imageJPEG($this->img["des"],"$save",$this->img["quality"]);
        } elseif ($this->img["format"] == "PNG") {
            //PNG
            imagePNG($this->img["des"],"$save");
        } elseif ($this->img["format"] == "GIF") {
            //GIF
            imageGIF($this->img["des"],"$save");
        } elseif ($this->img["format"] == "WBMP") {
            //WBMP
            imageWBMP($this->img["des"],"$save");
        }
    }
}
?>
Avatar billede dennism Nybegynder
30. juni 2003 - 18:51 #2
Hvordan smider man så sitets navn på billedet?
Avatar billede detox Nybegynder
30. juni 2003 - 20:00 #3
Eks.: Tekst på jpg-billede:
<?
$size = 8;
$rotate = 45;
$xstart = 650;
$ystart = 500;
$tekst = "Copyright: Anders And & co.";
$im = imagecreatefromjpeg ("img/first.jpg");
$sort = ImageColorAllocate($im,0,0,200);
$font="c:/foxserv/php/fonts/arial.ttf";
ImageTTFText($im,$size,$rotate,$xstart,$ystart,$sort,$font,$tekst);
header("Content-type: image/jpeg");
ImageJPEG($im);
ImageDestroy($im);
?>
Avatar billede detox Nybegynder
30. juni 2003 - 20:11 #4
$sort = ImageColorAllocate($im,0,0,200);
Er naturligvis blå, skal være:
$sort = ImageColorAllocate($im,0,0,0);
Avatar billede dennism Nybegynder
30. juni 2003 - 20:22 #5
Virker det kun til .jpg?
Avatar billede dennism Nybegynder
30. juni 2003 - 20:23 #6
Jeg får følgende besked:

Fatal error: Call to undefined function: imagecreatefromjpeg() in userprofilepics.php on line 48
Avatar billede dennism Nybegynder
30. juni 2003 - 20:28 #7
Hmm.. Jeg bruger nu denne kode:

<?
$size = 8;
$rotate = 45;
$xstart = 650;
$ystart = 500;
$tekst = "CykelKom.dk";
$im = imagecreatefromjpeg("dennis.jpg");
$sort = ImageColorAllocate($im,0,0,200);
$font="ariblk.ttf";
ImageTTFText($im,$size,$rotate,$xstart,$ystart,$sort,$font,$tekst);
header("Content-type: image/jpeg");
ImageJPEG($im);
ImageDestroy($im);
?>

Men den siger nu:
Warning: Could not find/open font in test.php on line 10
Avatar billede dennism Nybegynder
30. juni 2003 - 20:33 #8
Hmm.. Har vist selv fundet svar på min spørgsmål, men har nu følgende spørgsmål:

Jeg har nu denne kode:

<?
$size = 8;
$rotate = 45;
$xstart = 10;
$ystart = 10;
$tekst = "Test";
$im = imagecreatefromjpeg("eksperten.jpg");
$sort = ImageColorAllocate($im,0,0,200);
$font="/home/serveradmin/lrs003/demaweb.dk/test/ariblk.ttf";
ImageTTFText($im,$size,$rotate,$xstart,$ystart,$sort,$font,$tekst);
header("Content-type: image/jpeg");
ImageJPEG($im);
ImageDestroy($im);
?>

Og jeg prøver nu at køre eksperten.dk's logo igennem "maskinen". Resultatet af det er følgende:

http://www.demaweb.dk/test/test.php

Den skriver ikke noget!?
Avatar billede dennism Nybegynder
30. juni 2003 - 20:39 #9
Koden ser nu sådan ud:

<?
$size = 10;
$rotate = 45;
$xstart = 10;
$ystart = 10;
$tekst = "© CykelKom.dk";
$im = imagecreatefromjpeg("eksperten.jpg");
$sort = ImageColorAllocate($im,0,0,0);
$font="/home/serveradmin/lrs003/demaweb.dk/test/ariblk.ttf";
ImageTTFText($im,$size,$rotate,$xstart,$ystart,$sort,$font,$tekst);
header("Content-type: image/jpeg");
ImageJPEG($im);
ImageDestroy($im);
?>
Avatar billede dennism Nybegynder
30. juni 2003 - 23:56 #10
Kan I hjælpe eller!?
Avatar billede tipsen Nybegynder
01. juli 2003 - 00:11 #11
Det fungerer da fint - du skal nok bare justere gradtallet, da dette (som altid) beregnes mod uret fra klokken 3!

Dvs:

$rotate = 315;

gør nok hvad du forventer!
Avatar billede dennism Nybegynder
01. juli 2003 - 10:17 #12
Min kode er nu:

<?
$size = 8;
$rotate = 360;
$xstart = 5;
$ystart = 15;
$tekst = "CykelKom.dk";
$im = imagecreatefromjpeg("eksperten.jpg");
$sort = ImageColorAllocate($im,0,0,0);
$font="/home/serveradmin/lrs003/demaweb.dk/test/ariblk.ttf";
ImageTTFText($im,$size,$rotate,$xstart,$ystart,$sort,$font,$tekst);
header("Content-type: image/jpeg");
ImageJPEG($im);
ImageDestroy($im);
?>

Se her:

http://www.demaweb.dk/test/test.php

Hvorfor er teksten så utydelig? Og hvorfor bliver kvaliteten af billed forrinteg?
Avatar billede tipsen Nybegynder
01. juli 2003 - 10:51 #13
i grader er 360 = 0 !

For at forbedre kvaliteten vil jeg tro du skal benytte de funktioner der bruger true-color!
Avatar billede dennism Nybegynder
01. juli 2003 - 11:15 #14
Hvilke funktioner er det?
Kan man ik lave sådan at det er et billed man lapper over i stedet?
Avatar billede tipsen Nybegynder
01. juli 2003 - 12:23 #15
Sikkert - jeg har ikke selv arbejdet med image-funktionerne.
Avatar billede avminarm Juniormester
01. juli 2003 - 12:24 #16
Avatar billede thorus Nybegynder
05. juli 2003 - 21:00 #17
Prøv her -> www.phpuniverset.dk 

Det er primært kun om PHP/mySQL
Avatar billede avminarm Juniormester
18. juli 2003 - 11:11 #18
LUKKETID?
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