webForumDet fria alternativet
Logga in / Bli medlem

GD2 hjälp

PHP

1 svar · 276 visningar · startad av AndersN

Medlem sedan nov. 2000146 inlägg
Trådstart#1

Hittade en funktion på ett forum för att göra om storleken på bilder vid uppladdning, dock fungerar det inte riktigt som jag vill.
Har försökt läsa mig till hur jag skall kunna ändra det men antingen e jag dum i huvudet eller bara jättetrött för jag får inte till det.

Detta är koden:

 //Funktion för att skala presentationsbilden vid uppladdning.
    
      function scalePic($src)
    {
        global $new_data;
        global $new_size;

        //Fasta värden
        $dstWH=150;
        $quality=100;

        $info = getimagesize($src);
        switch($info[2])
        {
            case 1:
            $im_src = imagecreatefromgif($src);
            break;
            case 2:
            $im_src = imagecreatefromjpeg($src);
            break;
            case 3:
            $im_src = imagecreatefrompng($src);
            break;
        }

        if ($info[1] >= $info[0]) {
            $srcX = 0;
            $srcY = 0;
            $srcW = $info[0];
            $srcH = $info[0];
        }
        else
        {
            $srcX = round(($info[0] - $info[1])/2);
            $srcY = 0;
            $srcW = $info[1];
            $srcH = $info[1];
        }

        // Använd dessa om du har stöd för GD2
        $img_thumb = imageCreateTruecolor($dstWH, $dstWH);
        ImageCopyResampled ( $img_thumb, $im_src, 0, 0, $srcX, $srcY, $dstWH, $dstWH, $srcW, $srcH );
        //ImageCopyResampleBicubic( $img_thumb, $im_src, 0, 0, $srcX, $srcY, $dstWH, $dstWH, $srcW, $srcH );

        // output
        $tmpfname = tempnam ("../../../log/", "FOO");
        // Generate the temp file

        imageJPEG($img_thumb, $tmpfname, $quality);
        $new_data = addslashes(fread(fopen($tmpfname,"rb"), filesize($tmpfname)));
        $new_size = filesize($tmpfname);

        unlink($tmpfname);
        // finished with the file, discard

        //Destroy mempics
        ImageDestroy($img_thumb);
        ImageDestroy($im_src);
    }

Denna gör ju då så bilden blir 150*150 medans jag vill ha höjden 200 och bredden 150.

Det är okej o dömma ut mig bara nån kan hjälpa lite :birp

Medlem sedan juni 20006 031 inlägg
#2

Ok, då får vi göra lite ändringar

//Fasta värden
$dstWidth=150; // ändra
$dstHeight=200; // lägg till
$quality=100;

och längre ner i koden ändrar du en rad till

$img_thumb = imageCreateTruecolor($dstWidth, $dstHeight);
266 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)