2015-07-05 3 views
0

При загрузке на мой сервер обычное изображение загружается отлично, но для некоторых изображений при создании эскиза маг вращается, и я не знаю, почему или что происходит с моим кодом?Работа с изображениями, эскиз искажен?

Обратите внимание: я использую старый синтаксис, и я знаю, что это уродливо, но я ленив, и он работает.

<? session_start(); ?> 
<? include('header.inc.php'); ?> 
<? 
    if(isset($_POST['upload_Submit'])) { 
    $_SESSION['success'] = 0; 
    $upPath = "/home/dolphina/public_html/images/"; 
    $fileName = uniqid(time().date(mdY)); 
    $_SESSION['upload_Error'] = 0; 
    $error_Log = "<ul>"; 
     if ($_FILES['upload_Image']['size'] > 10000000) { 
     $error_Log .= "<li>image is greater than 10 megabyte</li>"; 
     $_SESSION['upload_Error'] = 1; 
     } 
     if (($_FILES['upload_Image']['type'] == "image/gif") || ($_FILES['upload_Image']['type'] == "image/pjpeg") || ($_FILES['upload_Image']['type'] == "image/jpeg") || ($_FILES['upload_Image']['type'] == "image/png")) { 
     if($_FILES['upload_Image']['type'] == "image/gif") { 
     $fileExt = ".gif"; 
     } 
     if($_FILES['upload_Image']['type'] == "image/pjpeg") { 
     $fileExt = ".jpg"; 
     } 
     if($_FILES['upload_Image']['type'] == "image/jpeg") { 
     $fileExt = ".jpeg"; 
     } 
     if($_FILES['upload_Image']['type'] == "image/png") { 
     $fileExt = ".png"; 
     } 
     } else { 
     $error_Log .= "<li>invalid image type</li>"; 
     $_SESSION['upload_Error'] = 1; 
    } 
    if(!$_POST['upload_Caption']) { 
     $error_Log .= "<li>no caption entered</li>"; 
     $_SESSION['upload_Error'] = 1; 
    } 
    if(!$_POST['upload_Password']) { 
     $error_Log .= "<li>no password entered</li>"; 
     $_SESSION['upload_Error'] = 1; 
    } 
    if($_POST['upload_Password'] != "3") { 
     $error_Log .= "<li>wrong password</li>"; 
     $_SESSION['upload_Error'] = 1; 
    } 
    $error_Log .= "</ul>"; 
    if($_SESSION['upload_Error'] == 1) { 
     echo $error_Log; 
     $_SESSION['upload_Error'] = 0; 
    } else { 
     //COPIES TEMP FILE TO PATH 
    copy($_FILES['upload_Image']['tmp_name'], $upPath."pics/".$fileName.$fileExt); 
    $first=ImageCreateFromJPEG($upPath."pics/".$fileName.$fileExt); 
    echo "GOT HERE"; 
//CREATES AND COPIES THUMBNAIL TO PATH 
function make_thumb($src, $dest, $desired_width) { 

    /* read the source image */ 
    $source_image = imagecreatefromjpeg($src); 
    $width = imagesx($source_image); 
    $height = imagesy($source_image); 

    /* find the "desired height" of this thumbnail, relative to the desired width */ 
    $desired_height = floor($height * ($desired_width/$width)); 

    /* create a new, "virtual" image */ 
    $virtual_image = imagecreatetruecolor($desired_width, $desired_height); 

    /* copy source image at a resized size */ 
    imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); 

    /* create the physical thumbnail image to its destination */ 
    imagejpeg($virtual_image, $dest); 
} 
make_thumb($upPath."pics/".$fileName.$fileExt, $upPath."thumb/thumbnail_".$fileName.$fileExt, 300); 
//INSERT INTO DATABASE 
     $upImage = "INSERT INTO `images` (`url`, `thumb`, `date`, `time`, `ip`, `caption`) VALUES ('images/pics/".$fileName.$fileExt."', 'images/thumb/thumbnail_".$fileName.$fileExt."', CURDATE(), CURTIME(), '".$_SERVER['REMOTE_ADDR']."', '".$_POST['upload_Caption']."')"; 
     $upFINAL = mysqli_query($mysql_conn, $upImage); 
     $_SESSION['success'] = 1; 
    } 
    } 
    if($_SESSION['success'] == 1) { echo("<div>SUCCESS</div>");} 
?> 
<style> 
ul { padding: 0; margin: 0; margin-left: 4px; } 
</style> 
<form method="POST" enctype="multipart/form-data" action="upload.php"> 
<div>File</div> 
<div><input type="file" name="upload_Image" size="40"></div> 
<div>Caption</div> 
<div><input type="text" name="upload_Caption" size="40"></div> 
<div><input type="password" name="upload_Password" size="40"></div> 
<div><input type="submit" name="upload_Submit" value="Upload Image"></div> 
</form> 
</div> 
+0

Можете ли вы добавить образец одного из изображений, который не подходит для процесса миниатюр? – Dekel

+0

Также похоже, что вы используете __imagecreatefromjpeg() __ независимо от формата ввода, хотя это должно просто сбой, а не выходные изображения. – spenibus

ответ

0

Из документации PHP, цитата из comment 112902 on imagecreatefromjpeg говорит, что это:

imagecreatefromjpeg()
Эта функция не чтит данные об ориентации EXIF. Картинки, которые поворачиваются с помощью EXIF, будут отображаться в исходной ориентации после обработки imagecreatefromjpeg().

Ваши миниатюры могут просто показывать свою первоначальную ориентацию. Это предполагает, что ваш зритель изображений действительно уважает этот флаг.

Также вы, вероятно, не должны использовать imagecreatefromjpeg(), если вход не jpeg.

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