Avatar billede usse Nybegynder
03. februar 2009 - 13:56 Der er 7 kommentarer og
1 løsning

Resize af billede bliver til en sort baggrund

Jeg ved ikke lige helt hvad der sker, men når jeg resizer et billede med det her jeg har sat sammen, bliver billederne kun sorte hmm..
Hvad er årsagen til det, nogle forslag til hvordan jeg kan ændre det?

public static function imageResize($img, $max_size, $max_width, $max_height, $destination, $img_name)
{
       
        // Upload the image temporary
        $tempID = $img_name;//rand(5, 15);
        ImageHandler::uploadImage($img, self::$temp, $tempID);
        $img_format = ImageHandler::getImageFormat($img);
        $img_source = self::$temp.$tempID.".".$img_format;
   
        //echo $img_source;
        if($img_format == "jpg" || $img_format == "JPG" )
            $img_format = "jpeg";
        list($width, $height, $format) = getimagesize($img_source);
       
        $imagecreatefrom_format = "imagecreatefrom".$img_format;
        $image_format = "image".$img_format;
       
        if($img_src = $imagecreatefrom_format($img_source))
        {
            $new_width = $width;
            $new_height = $height;

            if($max_width != 0 && $max_width < $width)
            {
                $new_width = ($max_width / $width)*$width;   
                $new_height = ($max_width / $width)*$height;
            }
            if($max_height != 0 && $max_height < $height)
            {
                $new_width = ($max_height / $height)*$width;   
                $new_height = ($max_height / $height)*$height;
            }
            //echo "width=".$new_width." height=".$new_height;
            $img_dst = imagecreatetruecolor($new_width, $new_height);
            $black = imagecolorallocate($im, 0, 0, 0);
            imagecolortransparent($img_dst, $black);

            imagecopyresampled($img_dst, $img_source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
            $image_format($img_dst, $destination.$tempID.".".$img_format);
            imagedestroy($img_dst);
        }
    }
Avatar billede jakobdo Ekspert
03. februar 2009 - 16:42 #1
Bruger du transparente gif eller png billeder ?
Avatar billede akadna Nybegynder
03. februar 2009 - 19:09 #2
Hvad er imagecreatefrom_format for en funktion ?

Hvad indholder $img_src ?
Avatar billede akadna Nybegynder
03. februar 2009 - 19:11 #3
imagecopyresampled skal have et img resource som src_image parameter. Hvad jeg skal se mig ud af, er det en streng/sti til billedet hos dig ?

http://dk2.php.net/imagecopyresampled
Avatar billede usse Nybegynder
03. februar 2009 - 20:26 #4
Den gør det ved alle formater for billeder..

Jamen imagecreatefrom er indbyggede funktioner i php, som gør det muligt at lave et billede udfra en kilde eller fil f.eks. imagecreatefromjpeg
Avatar billede Dan Nim Seniormester
03. februar 2009 - 20:43 #5
Jeg er klar over at imagecreatefrom er en php funktion. Men du kalder imagecreatefrom_format($img_source)

Bygger du en streng ? Eller tror jeg du skal ud i noget ala

...
$img_source=@imagecreatefromjpeg($img_source);
imagecopyresampled($img_dst, $img_source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
...
Avatar billede usse Nybegynder
03. februar 2009 - 20:45 #6
Doh det var en lille bitte fejl fra min side gah, hvor det irriteret mig.. !! I imagecopyresampled funktionen skal img_source være img_src
Avatar billede usse Nybegynder
03. februar 2009 - 20:46 #7
svar
Avatar billede usse Nybegynder
04. februar 2009 - 18:22 #8
Nej det er en smart måde at loade hvilken funktion den skal bruge til at generere billedet
$img_format bliver sat til billedets format
$imagecreatefrom_format = "imagecreatefrom".$img_format;
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