图像压缩似乎为PNG创建了黑色图像

时间:2018-05-07 14:48:37

标签: php image compression png uploading

我的网站上有一个基本的图片上传/压缩脚本,大多数图片似乎都运行正常。由于某种原因出现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')");


                }
              }
        }
}
}

0 个答案:

没有答案