上传后将.PNG图像转换为.JPEG

时间:2013-02-17 19:54:48

标签: php

    $file_extension= explode('.', $file_name); 
    $file_extn= strtolower(end($file_extension));  
    $old_file_path = $user_data['profile_pic'];

      function change_profile_image($user_id, $file_temp, $file_extn, $old_file_path){
            $file_path = 'core/images/profile/'.  substr(md5(time()), 0, 20) . '.' . $file_extn;
            move_uploaded_file($file_temp, $file_path);
            if(file_exists($old_file_path) === true){unlink($old_file_path);}
            mysql_query("UPDATE `users` SET `profile_pic` = '". mysql_real_escape_string($file_path) ."' WHERE `user_id` = " . (int)$user_id);

            if($file_extn == 'png'){
            list($width, $height) = getimagesize($old_file_path);
            $new_width = $width;
            $new_height = $height;
            $image_p = imagecreatetruecolor($new_width, $new_height);
            $image = imagecreatefrompng($old_file_path);

            imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
            imagejpeg($image_p, $file_path);
if(file_exists($old_file_path) === true){unlink($old_file_path);}           
mysql_query("UPDATE `users` SET `profile_pic` = '". mysql_real_escape_string($file_path) ."' WHERE `user_id` = " . (int)$user_id);
            }

            if($file_extn == 'jpg' || $file_extn == 'jpeg'){
            list($width, $height) = getimagesize($file_path);
            $new_width = $width;
            $new_height = $height;
            $image_p = imagecreatetruecolor($new_width, $new_height);
            $image = imagecreatefromjpeg($file_path);

            imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
            imagejpeg($image_p, $file_path);
if(file_exists($old_file_path) === true){unlink($old_file_path);}           
mysql_query("UPDATE `users` SET `profile_pic` = '". mysql_real_escape_string($file_path) ."' WHERE `user_id` = " . (int)$user_id);
            }
        }

图片正在上传,但问题是上传后没有转换图片。问题是什么?我相信if语句不起作用。

1 个答案:

答案 0 :(得分:0)

...
move_uploaded_file($file_temp, $file_path);
if(file_exists($old_file_path) === true){unlink($old_file_path);}
...
if($file_extn == 'png'){
        list($width, $height) = getimagesize($old_file_path);
...

我相信,由于您在使用$old_file_path之前删除了getimagesize($old_file_path),因此失败,因此imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);无法解决问题。

尝试在move_uploaded_file之后立即评论第一个文件删除。很确定这是问题...