Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

imagecreatefrompng is not working at all

Tags:

php

php-gd

I already checked the file with mime type. If it is jpg or gif it is working perfectly with

$src = imagecreatefromjpeg($tmpName);

and

$src = imagecreatefromgif($tmpName);

but if the image is png $src = imagecreatefrompng($tmpName);

src variable is empty in the png case, but in jpg and gif it is showing it's resource id.

would someone tell me what i need to do?

$finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime = finfo_file($finfo, $_FILES['photo']['tmp_name']);
    unset($_FILES["photo"]["type"]);
    $_FILES["photo"]["type"] = $mime;

    if ((($_FILES["photo"]["type"] == "image/gif") || ($_FILES["photo"]["type"] == "image/jpeg") || ($_FILES["photo"]["type"] == "image/jpg") || ($_FILES["photo"]["type"] == "image/pjpeg") || ($_FILES["photo"]["type"] == "image/x-png") || ($_FILES["photo"]["type"] == "image/png")) && in_array($extension, $allowedExts)) {

        if ($_FILES["photo"]["error"] > 0) {
            echo "Error uploading file <a href='step-1.php'> Try again. </a>";
            $image_check = 0;
            exit;
        } else {

            $image_check = 1;
            $fileName = $_FILES['photo']['name'];
            $tmpName = $_FILES['photo']['tmp_name'];
            $fileSize = $_FILES['photo']['size'];
            $fileType = $_FILES['photo']['type'];
            list($width1, $height1, $typeb, $attr) = getimagesize($tmpName);

            //$filePath = $uploadDir . $fileName;

            $size = filesize($_FILES['photo']['tmp_name']);

             $ext = $_FILES["photo"]["type"];

            if ($ext == 'image/jpeg' || $ext == 'image/jpg') {
            $src = imagecreatefromjpeg($tmpName);
        } else if ($ext == 'image/gif') {
            $src = imagecreatefromgif($tmpName);
        }
            else if(($ext=='image/png')||($ext=='image/x-png'))
         {
            $src = imagecreatefrompng($tmpName);
           }
       $newwidth1 = 624;


        $newheight1 = ($height1 * $newwidth1) / ($width1);
        $tmp = imagecreatetruecolor($newwidth1, $newheight1);

        imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth1, $newheight1, $width1, $height1);
        $filename = "resources/images/" . $append . $_FILES['photo']['name'];

         if ($ext == 'image/jpeg' || $ext == 'image/jpg') {
            imagejpeg($tmp, $filename, 90);
        } else if ($ext == 'image/gif') {
            imagegif($tmp, $filename, 90);
        }
        else if(($ext=='image/png')||($ext=='image/x-png'))
        {

            imagepng($tmp, $filename, 90);
        }
like image 869
user2679683 Avatar asked Sep 16 '13 05:09

user2679683


2 Answers

Write a file

<?php
    phpinfo();
?>

Browse it, you will see JPG Support and GIF create Support are enabled but PNG Support is disabled.

Enable PNG Support, it will work.

enter image description here

like image 161
MaxEcho Avatar answered Nov 05 '22 02:11

MaxEcho


Change from

imagepng($tmp, $filename, 90);

to

imagepng($tmp, $filename);
like image 7
PgKc Avatar answered Nov 05 '22 03:11

PgKc