2015-05-11 2 views
0

У меня есть следующий код ...Преобразование и сохранение загруженного изображения в PHP?

$current_full_path = realpath(dirname(__FILE__) . '/..'); 
$user_profile_picture_filename = $current_full_path . "/profile_pictures/" . $userid . ".jpg"; 

$user_profile_picture_submit = $_POST['user_profile_picture_submit']; 

if (isset ($user_profile_picture_submit)) { 

    $user_profile_image = $_FILES['user_profile_image']['name']; 
    $temp_profile_picture = $_FILES['user_profile_image']['tmp_name']; 

    $profile_picture_extension_array = explode(".", $user_profile_image); 
    $profile_picture_extension_case_insensitive = end($profile_picture_extension_array); 
    $profile_picture_extension = strtolower($profile_picture_extension_case_insensitive); 

    if ($profile_picture_extension == "png") { 

     $temp_profile_picture_converted = imagecreatefrompng($temp_profile_picture); 

    } elseif ($profile_picture_extension == "bmp") { 

     $temp_profile_picture_converted = imagecreatefromwbmp($temp_profile_picture); 

    } elseif ($profile_picture_extension == "gif") { 

     $temp_profile_picture_converted = imagecreatefromgif($temp_profile_picture); 

    } elseif (($profile_picture_extension == "jpg") || ($profile_picture_extension == "jpeg")) { 

     $temp_profile_picture_converted = imagecreatefromjpeg($temp_profile_picture); 

    } 

    imagejpeg($temp_profile_picture_converted, $user_profile_picture_filename, '75'); 
    imagedestroy($temp_profile_picture_converted); 


} 

То, что я пытаюсь сделать, это получить загруженную картинку, получить расширение, проверьте, какое расширение это, то на основе расширения, преобразовать его в формат JPEG с PHP, затем сохраните его как userid.jpg в каталоге «/ bar /». Однако ничего не спасено.

+0

Я думаю, вы должны дать полный путь к переменной $ user_profile_picture_filename –

+0

Полный путь означает? Разве это не полный путь? Эта переменная в ситуации, когда $ userid определена, будет иметь значение «http://111.111.1.111/foo/bar/111111.jpg» – Allenph

+0

Задайте свой путь $ user_profile_picture_filename через мой ответ ниже. –

ответ

0

PHP < 5,3

$fullpath = dirname(__FILE__); 

PHP> = 5,3

$fullpath = __DIR__; 

взглянуть на predefined constants

+0

Мне сложно понять, почему это применимо. Эти предопределенные константы просто указывают на каталог текущего файла, который выполняется, если я правильно понимаю. – Allenph

+0

Вам нужно сохранить свое изображение, используя тот полный путь. –

+0

Мой отредактированный код все еще не работает и включает в себя полные пути. – Allenph

0

Это более надежное средство для получения типа файла.

Как только у вас есть необработанное изображение, преобразуйте его и сохраните.

Get Загрузить: Тип

if(is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){ 
    $save = false; 

Поиск:

switch(strtolower($_FILES['image1']['type'])){ 
    case 'image/jpeg': 
    $image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']); 
    if ($image !== false){$save = true;break;} 
    case 'image/png': 
    $image = @imagecreatefrompng($_FILES['image1']['tmp_name']); 
    if ($image !== false){$save = true;break;} 
    case 'image/gif': 
    $image = @imagecreatefromgif($_FILES['image1']['tmp_name']); 
    if ($image !== false){$save = true;break;} 
    default: 
    $img = getimagesize($_FILES['image1']['tmp_name']); 
    switch(strtolower($img['mime'])){ 
    case 'image/jpeg': 
     $image = imagecreatefromjpeg($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
    case 'image/png': 
     $image = imagecreatefrompng($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
    case 'image/gif': 
     $image = imagecreatefromgif($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
    default: 
     $filename = $_FILES['image1']['name']; 
     $ext = substr($filename,-3); 
     switch(strtolower($ext)){ 
     case 'jpg': 
     $image = imagecreatefromjpeg($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     case 'gif': 
     $image = imagecreatefromgif($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     case 'png': 
     $image = imagecreatefrompng($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     default: 
     $image = imagecreatefromjpeg($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     $image = imagecreatefrompng($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     $image = imagecreatefromgif($_FILES['image1']['tmp_name']); 
     if ($image !== false){$save = true;break;} 
     } 
    } 
    } 
} 

Преобразование изображения в формате JPG:

if ($save === true){ 
    ob_start(); 
    imagejpeg($image, NULL, 70); 
    $jpg = ob_get_clean(); 

Сохранить:

Где $user является идентификатором пользователя.

$fp = fopen("/home/user/public_html/bar/$user.jpg",'w'); 
    fwrite($fp,$jpg); 
    fclose($fp); 
} 

}

Смежные вопросы