Сжатие изображения, кажется, создает черное изображение для PNG - PullRequest
0 голосов
/ 07 мая 2018

У меня есть базовый скрипт загрузки / сжатия изображений на моем веб-сайте, и большинство изображений работают нормально. По какой-то причине возникают проблемы с PNG, когда я пытаюсь добавить изображение PNG, фактическое изображение загружается, но сжатое изображение сохраняется как полный черный квадрат?

Я не могу найти, что может быть не так с этим сценарием? Изображения сохранялись без типа файла, поэтому я отредактировал код, чтобы загрузить все в формате JPG, чтобы попытаться исправить ошибку, она исправила то, что они сохранялись, но черные изображения остались прежними?

Кто-нибудь может указать мне правильное направление здесь?

if(isset($_POST['upload_images'])){
if(count($_FILES['upload']['name']) > 0){
        //Loop through each file
        for($i=0; $i<count($_FILES['upload']['name']); $i++) {
          //Get the temp file path
            $tmpFilePath = $_FILES['upload']['tmp_name'][$i];

            //Make sure we have a filepath
            if($tmpFilePath != ""){

                //save the filename
                $shortname = $_FILES['upload']['name'][$i];

                //save the url and the file
                $dirname = "galleries/".$portfolio_ref."/";
                $filePath = $dirname.$_FILES['upload']['name'][$i];
                $new_filename = date('dmYHis').rand(100000,9999999);
                $new_filename2 = $dirname.$new_filename.'.jpg';



                //Upload the file into the temp dir
                if(move_uploaded_file($tmpFilePath, $new_filename2)) {

$file = $new_filename2;
$data = $filePath;    
$cut_name = substr($data, strpos($data, "/") + 1);  
$cut_name = explode('/',$cut_name); 
$cut_name = end($cut_name); 

$newfile = $dirname.'thb_'.$new_filename.'.jpg';
$info = getimagesize($file);


list($width, $height) = getimagesize($file);

    $max_width = 300;
    $max_height = 400;

        //try max width first...
    $ratio = $max_width / $width;
    $new_width = $max_width;
    $new_height = $height * $ratio;

    //if that didn't work
    if ($new_height > $max_height) {
        $ratio = $max_height / $height;     
        $new_height = $max_height;
        $new_width = $width * $ratio;
    }

if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($file);
    elseif ($info['mime'] == 'image/gif') $image = imagecreatefromgif($file);
    elseif ($info['mime'] == 'image/png') $image = imagecreatefrompng($file);
    elseif ($info['mime'] == 'image/jpg') $image = imagecreatefromjpeg($file);
    elseif ($info['mime'] == 'image/JPEG') $image = imagecreatefromjpeg($file);
    elseif ($info['mime'] == 'image/PNG') $image = imagecreatefrompng($file);
    elseif ($info['mime'] == 'image/GIF') $image = imagecreatefromgif($file);
    elseif ($info['mime'] == 'image/JPG') $image = imagecreatefromjpeg($file);

$image = imagecreatetruecolor($new_width, $new_height);
$photo = imagecreatefromjpeg($file);
imagecopyresampled($image, $photo, 0, 0, 0, 0, $new_width, $new_height, $width, $height);


    imagejpeg($image, $newfile, 70);
    $origional_image = $file;
    $compressed_image = $newfile;
    $digit_date = date("dmy");
    $upload_date = date("Y-m-d");
    $imgid = $digit_date.$i.rand();

     mysqli_query($conn,"INSERT INTO umsikzw_images (image_id,portfolio_ref,thumb_link,full_link,image_name,date) VALUES ('$imgid','$portfolio_ref','$compressed_image','$origional_image','No Information','$upload_date')");


                }
              }
        }
}
}
...